API: Remove GtkStatusIcon
authorBenjamin Otte <otte@redhat.com>
Sun, 4 Sep 2016 19:51:09 +0000 (21:51 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 16 Oct 2016 16:17:21 +0000 (18:17 +0200)
12 files changed:
gtk/Makefile.am
gtk/deprecated/Makefile.inc
gtk/deprecated/gtkstatusicon-quartz.c [deleted file]
gtk/deprecated/gtkstatusicon.c [deleted file]
gtk/deprecated/gtkstatusicon.h [deleted file]
gtk/deprecated/gtktrayicon-x11.c [deleted file]
gtk/deprecated/gtktrayicon.h [deleted file]
gtk/gtk.h
tests/Makefile.am
tests/teststatusicon.c [deleted file]
testsuite/gtk/defaultvalue.c
testsuite/gtk/notify.c

index 79fc51556e23b7086550b8b47169f9dbfa4208f0..4200a737594edc22868732fc2166ec980476fd3c 100644 (file)
@@ -1023,7 +1023,6 @@ gtk_use_x11_c_sources =   \
        gtkplug.c               \
        gtksocket.c             \
        gtkxembed.c             \
-       deprecated/gtktrayicon-x11.c    \
        gtkapplication-x11.c    \
        gtkmountoperation-x11.c
 
@@ -1047,7 +1046,6 @@ gtk_use_stub_c_sources =  \
        gtkmountoperation-stub.c
 gtk_use_x11_private_h_sources =        \
        gtkxembed.h             \
-       deprecated/gtktrayicon.h        \
        xembed.h
 if USE_X11
 gtk_c_sources += $(gtk_use_x11_c_sources)
index 7e0e08bdd06286eeb5de80675760162495d02447..d2afb952589d0f8d05290ac54e7ff71e20dc26b4 100644 (file)
@@ -23,7 +23,6 @@ deprecated_h_sources =                        \
        deprecated/gtkradioaction.h     \
        deprecated/gtkrc.h              \
        deprecated/gtkrecentaction.h    \
-       deprecated/gtkstatusicon.h      \
        deprecated/gtkstock.h           \
        deprecated/gtkstyle.h           \
        deprecated/gtkstyleproperties.h \
@@ -72,7 +71,6 @@ deprecated_c_sources =                        \
        deprecated/gtkradioaction.c     \
        deprecated/gtkrc.c              \
        deprecated/gtkrecentaction.c    \
-       deprecated/gtkstatusicon.c      \
        deprecated/gtkstock.c           \
        deprecated/gtkstyle.c           \
        deprecated/gtkstyleproperties.c \
diff --git a/gtk/deprecated/gtkstatusicon-quartz.c b/gtk/deprecated/gtkstatusicon-quartz.c
deleted file mode 100644 (file)
index 7a2442b..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/* gtkstatusicon-quartz.c:
- *
- * Copyright (C) 2006 Imendio AB
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * GCC on Mac OS X handles inlined objective C in C-files.
- *
- * Authors:
- *  Mikael Hallendal <micke@imendio.com>
- */
-
-#import <Cocoa/Cocoa.h>
-#include <quartz/gdkquartz.h>
-
-#define QUARTZ_POOL_ALLOC NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
-#define QUARTZ_POOL_RELEASE [pool release]
-
-@interface GtkQuartzStatusIcon : NSObject 
-{
-  GtkStatusIcon *status_icon;
-  NSStatusBar   *ns_bar;
-  NSStatusItem  *ns_item;
-  NSImage       *current_image;
-  NSString      *ns_tooltip;
-}
-- (id) initWithStatusIcon:(GtkStatusIcon *)status_icon;
-- (void) ensureItem;
-- (void) actionCb:(NSObject *)button;
-- (void) setImage:(GdkPixbuf *)pixbuf;
-- (void) setVisible:(gboolean)visible;
-- (void) setToolTip:(const gchar *)tooltip_text;
-- (float) getWidth;
-- (float) getHeight;
-@end
-
-@implementation GtkQuartzStatusIcon : NSObject
-- (id) initWithStatusIcon:(GtkStatusIcon *)icon
-{
-  [super init];
-  status_icon = icon;
-  ns_bar = [NSStatusBar systemStatusBar];
-
-  return self;
-}
-
-- (void) ensureItem
-{
-  if (ns_item != nil)
-    return;
-
-  ns_item = [ns_bar statusItemWithLength:NSVariableStatusItemLength];
-  [ns_item setAction:@selector(actionCb:)];
-  [ns_item setTarget:self];
-  [ns_item retain];
-}
-
-- (void) dealloc
-{
-  [current_image release];
-  [ns_item release];
-  [ns_bar release];
-
-  [super dealloc];
-}
-
-- (void) actionCb:(NSObject *)button
-{ 
-  NSEvent *event = [NSApp currentEvent];
-  double time = [event timestamp];
-  
-  g_signal_emit (status_icon,
-                 status_icon_signals [POPUP_MENU_SIGNAL], 0,
-                 1,
-                 time * 1000.0);
-}
-
-- (void) setImage:(GdkPixbuf *)pixbuf
-{
-  /* Support NULL */
-  [self ensureItem];
-
-  if (current_image != nil) {
-    [current_image release];
-    current_image = nil;
-  }
-  
-  if (!pixbuf) {
-    [ns_item release];
-    ns_item = nil;
-    return;
-  }
-
-  current_image = gdk_quartz_pixbuf_to_ns_image_libgtk_only (pixbuf);
-  [current_image retain];
-
-  [ns_item setImage:current_image];
-}
-
-- (void) setVisible:(gboolean)visible
-{
-  if (visible) {
-    [self ensureItem];
-    if (ns_item != nil)
-      [ns_item setImage:current_image];
-    if (ns_tooltip != nil)
-      [ns_item setToolTip:ns_tooltip];
-  } else {
-    [ns_item release];
-    ns_item = nil;
-  }
-}
-
-- (void) setToolTip:(const gchar *)tooltip_text
-{
-  [ns_tooltip release];
-  ns_tooltip = [[NSString stringWithUTF8String:tooltip_text] retain];
-  
-  [ns_item setToolTip:ns_tooltip];
-}
-
-- (float) getWidth
-{
-  return [ns_bar thickness];
-}
-
-- (float) getHeight
-{
-  return [ns_bar thickness];
-}
-@end
-
-
-
diff --git a/gtk/deprecated/gtkstatusicon.c b/gtk/deprecated/gtkstatusicon.c
deleted file mode 100644 (file)
index b33a296..0000000
+++ /dev/null
@@ -1,2864 +0,0 @@
-/* gtkstatusicon.c:
- *
- * Copyright (C) 2003 Sun Microsystems, Inc.
- * Copyright (C) 2005 Hans Breuer <hans@breuer.org>
- * Copyright (C) 2005 Novell, Inc.
- * Copyright (C) 2006 Imendio AB
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *     Mark McLoughlin <mark@skynet.ie>
- *     Hans Breuer <hans@breuer.org>
- *     Tor Lillqvist <tml@novell.com>
- *     Mikael Hallendal <micke@imendio.com>
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <stdlib.h>
-
-#define GDK_DISABLE_DEPRECATION_WARNINGS
-#include "gtkstatusicon.h"
-
-#include "gtkintl.h"
-#include "gtkiconhelperprivate.h"
-#include "gtkmain.h"
-#include "gtkmarshalers.h"
-#include "gtksizerequest.h"
-#include "gtkprivate.h"
-#include "gtkwidget.h"
-#include "gtktooltip.h"
-#include "gtkicontheme.h"
-#include "gtklabel.h"
-#include "gtkstylecontextprivate.h"
-#include "gtktypebuiltins.h"
-
-#ifdef GDK_WINDOWING_X11
-#include "gdk/x11/gdkx.h"
-#include "gtktrayicon.h"
-#endif
-
-#ifdef GDK_WINDOWING_WIN32
-#include "gdk/win32/gdkwin32.h"
-#define WM_GTK_TRAY_NOTIFICATION (WM_USER+1)
-#endif
-
-
-/**
- * SECTION:gtkstatusicon
- * @Short_description: Display an icon in the system tray
- * @Title: GtkStatusIcon
- *
- * The “system tray” or notification area is normally used for transient icons
- * that indicate some special state. For example, a system tray icon might
- * appear to tell the user that they have new mail, or have an incoming instant
- * message, or something along those lines. The basic idea is that creating an
- * icon in the notification area is less annoying than popping up a dialog.
- *
- * A #GtkStatusIcon object can be used to display an icon in a “system tray”.
- * The icon can have a tooltip, and the user can interact with it by
- * activating it or popping up a context menu. Critical information should
- * not solely be displayed in a #GtkStatusIcon, since it may not be
- * visible (e.g. when the user doesn’t have a notification area on his panel).
- * This can be checked with gtk_status_icon_is_embedded().
- *
- * On X11, the implementation follows the
- * [FreeDesktop System Tray Specification](http://www.freedesktop.org/wiki/Specifications/systemtray-spec).
- * Implementations of the “tray” side of this specification can
- * be found e.g. in the GNOME 2 and KDE panel applications.
- *
- * Note that a GtkStatusIcon is not a widget, but just
- * a #GObject. Making it a widget would be impractical, since the system tray
- * on Win32 doesn’t allow to embed arbitrary widgets.
- *
- * GtkStatusIcon has been deprecated in 3.14. You should consider using
- * notifications or more modern platform-specific APIs instead. GLib provides
- * the #GNotification API which works well with #GtkApplication. Also see this
- * [HowDoI](https://wiki.gnome.org/HowDoI/GNotification).
- */
-
-
-#define BLINK_TIMEOUT 500
-
-enum
-{
-  PROP_0,
-  PROP_PIXBUF,
-  PROP_FILE,
-  PROP_STOCK,
-  PROP_ICON_NAME,
-  PROP_GICON,
-  PROP_STORAGE_TYPE,
-  PROP_SIZE,
-  PROP_SCREEN,
-  PROP_VISIBLE,
-  PROP_ORIENTATION,
-  PROP_EMBEDDED,
-  PROP_BLINKING,
-  PROP_HAS_TOOLTIP,
-  PROP_TOOLTIP_TEXT,
-  PROP_TOOLTIP_MARKUP,
-  PROP_TITLE
-};
-
-enum 
-{
-  ACTIVATE_SIGNAL,
-  POPUP_MENU_SIGNAL,
-  SIZE_CHANGED_SIGNAL,
-  BUTTON_PRESS_EVENT_SIGNAL,
-  BUTTON_RELEASE_EVENT_SIGNAL,
-  SCROLL_EVENT_SIGNAL,
-  QUERY_TOOLTIP_SIGNAL,
-  LAST_SIGNAL
-};
-
-static guint status_icon_signals [LAST_SIGNAL] = { 0 };
-
-#ifdef GDK_WINDOWING_QUARTZ
-#include "gtkstatusicon-quartz.c"
-#endif
-
-struct _GtkStatusIconPrivate
-{
-#ifdef GDK_WINDOWING_X11
-  GtkWidget    *tray_icon;
-  GtkWidget    *image;
-#else
-  GtkWidget    *dummy_widget;
-#endif
-
-#ifdef GDK_WINDOWING_WIN32
-  NOTIFYICONDATAW nid;
-  gint          taskbar_top;
-  gint         last_click_x, last_click_y;
-  GtkOrientation orientation;
-  gchar         *tooltip_text;
-  gchar         *title;
-#endif
-
-#ifdef GDK_WINDOWING_QUARTZ
-  GtkQuartzStatusIcon *status_item;
-  gchar         *tooltip_text;
-  gchar         *title;
-#endif
-
-  gint           size;
-  GtkImageDefinition *image_def;
-  guint          visible : 1;
-};
-
-static void     gtk_status_icon_constructed      (GObject        *object);
-static void     gtk_status_icon_finalize         (GObject        *object);
-static void     gtk_status_icon_set_property     (GObject        *object,
-                                                 guint           prop_id,
-                                                 const GValue   *value,
-                                                 GParamSpec     *pspec);
-static void     gtk_status_icon_get_property     (GObject        *object,
-                                                 guint           prop_id,
-                                                 GValue         *value,
-                                                 GParamSpec     *pspec);
-
-#ifdef GDK_WINDOWING_X11
-static void     gtk_status_icon_size_allocate    (GtkStatusIcon  *status_icon,
-                                                 GtkAllocation  *allocation);
-static void     gtk_status_icon_screen_changed   (GtkStatusIcon  *status_icon,
-                                                 GdkScreen      *old_screen);
-static void     gtk_status_icon_embedded_changed (GtkStatusIcon *status_icon);
-static void     gtk_status_icon_orientation_changed (GtkStatusIcon *status_icon);
-static void     gtk_status_icon_padding_changed  (GtkStatusIcon *status_icon);
-static void     gtk_status_icon_icon_size_changed(GtkStatusIcon *status_icon);
-static void     gtk_status_icon_fg_changed       (GtkStatusIcon *status_icon);
-static void     gtk_status_icon_color_changed    (GtkTrayIcon   *tray,
-                                                  GParamSpec    *pspec,
-                                                  GtkStatusIcon *status_icon);
-static gboolean gtk_status_icon_scroll           (GtkStatusIcon  *status_icon,
-                                                 GdkEventScroll *event);
-static gboolean gtk_status_icon_query_tooltip    (GtkStatusIcon *status_icon,
-                                                 gint           x,
-                                                 gint           y,
-                                                 gboolean       keyboard_tip,
-                                                 GtkTooltip    *tooltip);
-
-static gboolean gtk_status_icon_key_press        (GtkStatusIcon  *status_icon,
-                                                 GdkEventKey    *event);
-static void     gtk_status_icon_popup_menu       (GtkStatusIcon  *status_icon);
-#endif
-static gboolean gtk_status_icon_button_press     (GtkStatusIcon  *status_icon,
-                                                 GdkEventButton *event);
-static gboolean gtk_status_icon_button_release   (GtkStatusIcon  *status_icon,
-                                                 GdkEventButton *event);
-static void     gtk_status_icon_reset_image_data (GtkStatusIcon  *status_icon);
-static void     gtk_status_icon_update_image    (GtkStatusIcon *status_icon);
-
-G_DEFINE_TYPE_WITH_PRIVATE (GtkStatusIcon, gtk_status_icon, G_TYPE_OBJECT)
-
-static void
-gtk_status_icon_class_init (GtkStatusIconClass *class)
-{
-  GObjectClass *gobject_class = (GObjectClass *) class;
-
-  gobject_class->constructed  = gtk_status_icon_constructed;
-  gobject_class->finalize     = gtk_status_icon_finalize;
-  gobject_class->set_property = gtk_status_icon_set_property;
-  gobject_class->get_property = gtk_status_icon_get_property;
-
-  class->button_press_event   = NULL;
-  class->button_release_event = NULL;
-  class->scroll_event         = NULL;
-  class->query_tooltip        = NULL;
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_PIXBUF,
-                                  g_param_spec_object ("pixbuf",
-                                                       P_("Pixbuf"),
-                                                       P_("A GdkPixbuf to display"),
-                                                       GDK_TYPE_PIXBUF,
-                                                       GTK_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_FILE,
-                                  g_param_spec_string ("file",
-                                                       P_("Filename"),
-                                                       P_("Filename to load and display"),
-                                                       NULL,
-                                                       GTK_PARAM_WRITABLE));
-
-  /**
-   * GtkStatusIcon:stock:
-   *
-   * Deprecated: 3.10: Use #GtkStatusIcon:icon-name instead.
-   */
-  g_object_class_install_property (gobject_class,
-                                  PROP_STOCK,
-                                  g_param_spec_string ("stock",
-                                                       P_("Stock ID"),
-                                                       P_("Stock ID for a stock image to display"),
-                                                       NULL,
-                                                       GTK_PARAM_READWRITE | G_PARAM_DEPRECATED));
-  
-  g_object_class_install_property (gobject_class,
-                                   PROP_ICON_NAME,
-                                   g_param_spec_string ("icon-name",
-                                                        P_("Icon Name"),
-                                                        P_("The name of the icon from the icon theme"),
-                                                        NULL,
-                                                        GTK_PARAM_READWRITE));
-
-  /**
-   * GtkStatusIcon:gicon:
-   *
-   * The #GIcon displayed in the #GtkStatusIcon. For themed icons,
-   * the image will be updated automatically if the theme changes.
-   *
-   * Since: 2.14
-   */
-  g_object_class_install_property (gobject_class,
-                                   PROP_GICON,
-                                   g_param_spec_object ("gicon",
-                                                        P_("GIcon"),
-                                                        P_("The GIcon being displayed"),
-                                                        G_TYPE_ICON,
-                                                        GTK_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_STORAGE_TYPE,
-                                  g_param_spec_enum ("storage-type",
-                                                     P_("Storage type"),
-                                                     P_("The representation being used for image data"),
-                                                     GTK_TYPE_IMAGE_TYPE,
-                                                     GTK_IMAGE_EMPTY,
-                                                     GTK_PARAM_READABLE));
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_SIZE,
-                                  g_param_spec_int ("size",
-                                                    P_("Size"),
-                                                    P_("The size of the icon"),
-                                                    0,
-                                                    G_MAXINT,
-                                                    0,
-                                                    GTK_PARAM_READABLE));
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_SCREEN,
-                                  g_param_spec_object ("screen",
-                                                       P_("Screen"),
-                                                       P_("The screen where this status icon will be displayed"),
-                                                       GDK_TYPE_SCREEN,
-                                                       GTK_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_VISIBLE,
-                                  g_param_spec_boolean ("visible",
-                                                        P_("Visible"),
-                                                        P_("Whether the status icon is visible"),
-                                                        TRUE,
-                                                        GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
-
-
-  /**
-   * GtkStatusIcon:embedded: 
-   *
-   * %TRUE if the statusicon is embedded in a notification area.
-   *
-   * Since: 2.12
-   */
-  g_object_class_install_property (gobject_class,
-                                  PROP_EMBEDDED,
-                                  g_param_spec_boolean ("embedded",
-                                                        P_("Embedded"),
-                                                        P_("Whether the status icon is embedded"),
-                                                        FALSE,
-                                                        GTK_PARAM_READABLE));
-
-  /**
-   * GtkStatusIcon:orientation:
-   *
-   * The orientation of the tray in which the statusicon 
-   * is embedded. 
-   *
-   * Since: 2.12
-   */
-  g_object_class_install_property (gobject_class,
-                                  PROP_ORIENTATION,
-                                  g_param_spec_enum ("orientation",
-                                                     P_("Orientation"),
-                                                     P_("The orientation of the tray"),
-                                                     GTK_TYPE_ORIENTATION,
-                                                     GTK_ORIENTATION_HORIZONTAL,
-                                                     GTK_PARAM_READABLE));
-
-/**
- * GtkStatusIcon:has-tooltip:
- *
- * Enables or disables the emission of #GtkStatusIcon::query-tooltip on
- * @status_icon.  A value of %TRUE indicates that @status_icon can have a
- * tooltip, in this case the status icon will be queried using
- * #GtkStatusIcon::query-tooltip to determine whether it will provide a
- * tooltip or not.
- *
- * Note that setting this property to %TRUE for the first time will change
- * the event masks of the windows of this status icon to include leave-notify
- * and motion-notify events. This will not be undone when the property is set
- * to %FALSE again.
- *
- * Whether this property is respected is platform dependent.
- * For plain text tooltips, use #GtkStatusIcon:tooltip-text in preference.
- *
- * Since: 2.16
- */
-  g_object_class_install_property (gobject_class,
-                                  PROP_HAS_TOOLTIP,
-                                  g_param_spec_boolean ("has-tooltip",
-                                                        P_("Has tooltip"),
-                                                        P_("Whether this tray icon has a tooltip"),
-                                                        FALSE,
-                                                        GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
-
-  /**
-   * GtkStatusIcon:tooltip-text:
-   *
-   * Sets the text of tooltip to be the given string.
-   *
-   * Also see gtk_tooltip_set_text().
-   *
-   * This is a convenience property which will take care of getting the
-   * tooltip shown if the given string is not %NULL.
-   * #GtkStatusIcon:has-tooltip will automatically be set to %TRUE and
-   * the default handler for the #GtkStatusIcon::query-tooltip signal
-   * will take care of displaying the tooltip.
-   *
-   * Note that some platforms have limitations on the length of tooltips
-   * that they allow on status icons, e.g. Windows only shows the first
-   * 64 characters.
-   *
-   * Since: 2.16
-   */
-  g_object_class_install_property (gobject_class,
-                                   PROP_TOOLTIP_TEXT,
-                                   g_param_spec_string ("tooltip-text",
-                                                        P_("Tooltip Text"),
-                                                        P_("The contents of the tooltip for this widget"),
-                                                        NULL,
-                                                        GTK_PARAM_READWRITE));
-  /**
-   * GtkStatusIcon:tooltip-markup:
-   *
-   * Sets the text of tooltip to be the given string, which is marked up
-   * with the [Pango text markup language][PangoMarkupFormat].
-   * Also see gtk_tooltip_set_markup().
-   *
-   * This is a convenience property which will take care of getting the
-   * tooltip shown if the given string is not %NULL.
-   * #GtkStatusIcon:has-tooltip will automatically be set to %TRUE and
-   * the default handler for the #GtkStatusIcon::query-tooltip signal
-   * will take care of displaying the tooltip.
-   *
-   * On some platforms, embedded markup will be ignored.
-   *
-   * Since: 2.16
-   */
-  g_object_class_install_property (gobject_class,
-                                  PROP_TOOLTIP_MARKUP,
-                                  g_param_spec_string ("tooltip-markup",
-                                                       P_("Tooltip markup"),
-                                                       P_("The contents of the tooltip for this tray icon"),
-                                                       NULL,
-                                                       GTK_PARAM_READWRITE));
-
-
-  /**
-   * GtkStatusIcon:title:
-   *
-   * The title of this tray icon. This should be a short, human-readable,
-   * localized string describing the tray icon. It may be used by tools
-   * like screen readers to render the tray icon.
-   *
-   * Since: 2.18
-   */
-  g_object_class_install_property (gobject_class,
-                                   PROP_TITLE,
-                                   g_param_spec_string ("title",
-                                                        P_("Title"),
-                                                        P_("The title of this tray icon"),
-                                                        NULL,
-                                                        GTK_PARAM_READWRITE));
-
-  /**
-   * GtkStatusIcon::activate:
-   * @status_icon: the object which received the signal
-   *
-   * Gets emitted when the user activates the status icon. 
-   * If and how status icons can activated is platform-dependent.
-   *
-   * Unlike most G_SIGNAL_ACTION signals, this signal is meant to 
-   * be used by applications and should be wrapped by language bindings.
-   *
-   * Since: 2.10
-   */
-  status_icon_signals [ACTIVATE_SIGNAL] =
-    g_signal_new (I_("activate"),
-                 G_TYPE_FROM_CLASS (gobject_class),
-                 G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                 G_STRUCT_OFFSET (GtkStatusIconClass, activate),
-                 NULL,
-                 NULL,
-                 g_cclosure_marshal_VOID__VOID,
-                 G_TYPE_NONE,
-                 0);
-
-  /**
-   * GtkStatusIcon::popup-menu:
-   * @status_icon: the object which received the signal
-   * @button: the button that was pressed, or 0 if the 
-   *   signal is not emitted in response to a button press event
-   * @activate_time: the timestamp of the event that
-   *   triggered the signal emission
-   *
-   * Gets emitted when the user brings up the context menu
-   * of the status icon. Whether status icons can have context 
-   * menus and how these are activated is platform-dependent.
-   *
-   * The @button and @activate_time parameters should be 
-   * passed as the last to arguments to gtk_menu_popup().
-   *
-   * Unlike most G_SIGNAL_ACTION signals, this signal is meant to 
-   * be used by applications and should be wrapped by language bindings.
-   *
-   * Since: 2.10
-   */
-  status_icon_signals [POPUP_MENU_SIGNAL] =
-    g_signal_new (I_("popup-menu"),
-                 G_TYPE_FROM_CLASS (gobject_class),
-                 G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                 G_STRUCT_OFFSET (GtkStatusIconClass, popup_menu),
-                 NULL,
-                 NULL,
-                 _gtk_marshal_VOID__UINT_UINT,
-                 G_TYPE_NONE,
-                 2,
-                 G_TYPE_UINT,
-                 G_TYPE_UINT);
-
-  /**
-   * GtkStatusIcon::size-changed:
-   * @status_icon: the object which received the signal
-   * @size: the new size
-   *
-   * Gets emitted when the size available for the image
-   * changes, e.g. because the notification area got resized.
-   *
-   * Returns: %TRUE if the icon was updated for the new
-   * size. Otherwise, GTK+ will scale the icon as necessary.
-   *
-   * Since: 2.10
-   */
-  status_icon_signals [SIZE_CHANGED_SIGNAL] =
-    g_signal_new (I_("size-changed"),
-                 G_TYPE_FROM_CLASS (gobject_class),
-                 G_SIGNAL_RUN_LAST,
-                 G_STRUCT_OFFSET (GtkStatusIconClass, size_changed),
-                 g_signal_accumulator_true_handled,
-                 NULL,
-                 _gtk_marshal_BOOLEAN__INT,
-                 G_TYPE_BOOLEAN,
-                 1,
-                 G_TYPE_INT);
-
-  /**
-   * GtkStatusIcon::button-press-event:
-   * @status_icon: the object which received the signal
-   * @event: (type Gdk.EventButton): the #GdkEventButton which triggered 
-   *                                 this signal
-   *
-   * The ::button-press-event signal will be emitted when a button
-   * (typically from a mouse) is pressed.
-   *
-   * Whether this event is emitted is platform-dependent.  Use the ::activate
-   * and ::popup-menu signals in preference.
-   *
-   * Returns: %TRUE to stop other handlers from being invoked
-   * for the event. %FALSE to propagate the event further.
-   *
-   * Since: 2.14
-   */
-  status_icon_signals [BUTTON_PRESS_EVENT_SIGNAL] =
-    g_signal_new (I_("button_press_event"),
-                 G_TYPE_FROM_CLASS (gobject_class),
-                 G_SIGNAL_RUN_LAST,
-                 G_STRUCT_OFFSET (GtkStatusIconClass, button_press_event),
-                 g_signal_accumulator_true_handled, NULL,
-                 _gtk_marshal_BOOLEAN__BOXED,
-                 G_TYPE_BOOLEAN, 1,
-                 GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
-
-  /**
-   * GtkStatusIcon::button-release-event:
-   * @status_icon: the object which received the signal
-   * @event: (type Gdk.EventButton): the #GdkEventButton which triggered 
-   *                                 this signal
-   *
-   * The ::button-release-event signal will be emitted when a button
-   * (typically from a mouse) is released.
-   *
-   * Whether this event is emitted is platform-dependent.  Use the ::activate
-   * and ::popup-menu signals in preference.
-   *
-   * Returns: %TRUE to stop other handlers from being invoked
-   * for the event. %FALSE to propagate the event further.
-   *
-   * Since: 2.14
-   */
-  status_icon_signals [BUTTON_RELEASE_EVENT_SIGNAL] =
-    g_signal_new (I_("button_release_event"),
-                 G_TYPE_FROM_CLASS (gobject_class),
-                 G_SIGNAL_RUN_LAST,
-                 G_STRUCT_OFFSET (GtkStatusIconClass, button_release_event),
-                 g_signal_accumulator_true_handled, NULL,
-                 _gtk_marshal_BOOLEAN__BOXED,
-                 G_TYPE_BOOLEAN, 1,
-                 GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
-
-  /**
-   * GtkStatusIcon::scroll-event:
-   * @status_icon: the object which received the signal.
-   * @event: (type Gdk.EventScroll): the #GdkEventScroll which triggered 
-   *                                 this signal
-   *
-   * The ::scroll-event signal is emitted when a button in the 4 to 7
-   * range is pressed. Wheel mice are usually configured to generate
-   * button press events for buttons 4 and 5 when the wheel is turned.
-   *
-   * Whether this event is emitted is platform-dependent.
-   *
-   * Returns: %TRUE to stop other handlers from being invoked for the event.
-   *   %FALSE to propagate the event further.
-   *
-   * Since: 2.16
-   */
-  status_icon_signals[SCROLL_EVENT_SIGNAL] =
-    g_signal_new (I_("scroll_event"),
-                 G_TYPE_FROM_CLASS (gobject_class),
-                 G_SIGNAL_RUN_LAST,
-                 G_STRUCT_OFFSET (GtkStatusIconClass, scroll_event),
-                 g_signal_accumulator_true_handled, NULL,
-                 _gtk_marshal_BOOLEAN__BOXED,
-                 G_TYPE_BOOLEAN, 1,
-                 GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
-
-  /**
-   * GtkStatusIcon::query-tooltip:
-   * @status_icon: the object which received the signal
-   * @x: the x coordinate of the cursor position where the request has been
-   *     emitted, relative to @status_icon
-   * @y: the y coordinate of the cursor position where the request has been
-   *     emitted, relative to @status_icon
-   * @keyboard_mode: %TRUE if the tooltip was trigged using the keyboard
-   * @tooltip: a #GtkTooltip
-   *
-   * Emitted when the hover timeout has expired with the
-   * cursor hovering above @status_icon; or emitted when @status_icon got
-   * focus in keyboard mode.
-   *
-   * Using the given coordinates, the signal handler should determine
-   * whether a tooltip should be shown for @status_icon. If this is
-   * the case %TRUE should be returned, %FALSE otherwise. Note that if
-   * @keyboard_mode is %TRUE, the values of @x and @y are undefined and
-   * should not be used.
-   *
-   * The signal handler is free to manipulate @tooltip with the therefore
-   * destined function calls.
-   *
-   * Whether this signal is emitted is platform-dependent.
-   * For plain text tooltips, use #GtkStatusIcon:tooltip-text in preference.
-   *
-   * Returns: %TRUE if @tooltip should be shown right now, %FALSE otherwise.
-   *
-   * Since: 2.16
-   */
-  status_icon_signals [QUERY_TOOLTIP_SIGNAL] =
-    g_signal_new (I_("query_tooltip"),
-                 G_TYPE_FROM_CLASS (gobject_class),
-                 G_SIGNAL_RUN_LAST,
-                 G_STRUCT_OFFSET (GtkStatusIconClass, query_tooltip),
-                 g_signal_accumulator_true_handled, NULL,
-                 _gtk_marshal_BOOLEAN__INT_INT_BOOLEAN_OBJECT,
-                 G_TYPE_BOOLEAN, 4,
-                 G_TYPE_INT,
-                 G_TYPE_INT,
-                 G_TYPE_BOOLEAN,
-                 GTK_TYPE_TOOLTIP);
-}
-
-#ifdef GDK_WINDOWING_WIN32
-
-static void
-build_button_event (GtkStatusIconPrivate *priv,
-                   GdkEventButton       *e,
-                   guint                 button)
-{
-  POINT pos;
-  GdkRectangle monitor0;
-
-  /* We know that gdk/win32 puts the primary monitor at index 0 */
-  gdk_screen_get_monitor_geometry (gdk_screen_get_default (), 0, &monitor0);
-  e->window = g_object_ref (gdk_get_default_root_window ());
-  e->send_event = TRUE;
-  e->time = GetTickCount ();
-  GetCursorPos (&pos);
-  priv->last_click_x = e->x = pos.x + monitor0.x;
-  priv->last_click_y = e->y = pos.y + monitor0.y;
-  e->axes = NULL;
-  e->state = 0;
-  e->button = button;
-  //FIXME: e->device = gdk_display_get_default ()->core_pointer;
-  e->x_root = e->x;
-  e->y_root = e->y;
-}
-
-typedef struct
-{
-  GtkStatusIcon *status_icon;
-  GdkEventButton *event;
-} ButtonCallbackData;
-
-static gboolean
-button_callback (gpointer data)
-{
-  ButtonCallbackData *bc = (ButtonCallbackData *) data;
-
-  if (bc->event->type == GDK_BUTTON_PRESS)
-    gtk_status_icon_button_press (bc->status_icon, bc->event);
-  else
-    gtk_status_icon_button_release (bc->status_icon, bc->event);
-
-  gdk_event_free ((GdkEvent *) bc->event);
-  g_free (data);
-
-  return G_SOURCE_REMOVE;
-}
-
-static UINT taskbar_created_msg = 0;
-static GSList *status_icons = NULL;
-static UINT status_icon_id = 0;
-
-static GtkStatusIcon *
-find_status_icon (UINT id)
-{
-  GSList *rover;
-
-  for (rover = status_icons; rover != NULL; rover = rover->next)
-    {
-      GtkStatusIcon *status_icon = GTK_STATUS_ICON (rover->data);
-      GtkStatusIconPrivate *priv = status_icon->priv;
-
-      if (priv->nid.uID == id)
-        return status_icon;
-    }
-
-  return NULL;
-}
-
-static LRESULT CALLBACK
-wndproc (HWND   hwnd,
-        UINT   message,
-        WPARAM wparam,
-        LPARAM lparam)
-{
-  if (message == taskbar_created_msg)
-    {
-      GSList *rover;
-
-      for (rover = status_icons; rover != NULL; rover = rover->next)
-       {
-         GtkStatusIcon *status_icon = GTK_STATUS_ICON (rover->data);
-         GtkStatusIconPrivate *priv = status_icon->priv;
-
-         /* taskbar_created_msg is also fired when DPI changes. Try to delete existing icons if possible. */
-         if (!Shell_NotifyIconW (NIM_DELETE, &priv->nid))
-         {
-               g_warning (G_STRLOC ": Shell_NotifyIcon(NIM_DELETE) on existing icon failed");
-         }
-
-         priv->nid.hWnd = hwnd;
-         priv->nid.uID = status_icon_id++;
-         priv->nid.uCallbackMessage = WM_GTK_TRAY_NOTIFICATION;
-         priv->nid.uFlags = NIF_MESSAGE;
-
-         if (!Shell_NotifyIconW (NIM_ADD, &priv->nid))
-           {
-             g_warning (G_STRLOC ": Shell_NotifyIcon(NIM_ADD) failed");
-             priv->nid.hWnd = NULL;
-             continue;
-           }
-
-         gtk_status_icon_update_image (status_icon);
-       }
-      return 0;
-    }
-
-  if (message == WM_GTK_TRAY_NOTIFICATION)
-    {
-      ButtonCallbackData *bc;
-      guint button;
-      
-      switch (lparam)
-       {
-       case WM_LBUTTONDOWN:
-         button = 1;
-         goto buttondown0;
-
-       case WM_MBUTTONDOWN:
-         button = 2;
-         goto buttondown0;
-
-       case WM_RBUTTONDOWN:
-         button = 3;
-         goto buttondown0;
-
-       case WM_XBUTTONDOWN:
-         if (HIWORD (wparam) == XBUTTON1)
-           button = 4;
-         else
-           button = 5;
-
-       buttondown0:
-         bc = g_new (ButtonCallbackData, 1);
-         bc->event = (GdkEventButton *) gdk_event_new (GDK_BUTTON_PRESS);
-         bc->status_icon = find_status_icon (wparam);
-         build_button_event (bc->status_icon->priv, bc->event, button);
-         g_idle_add (button_callback, bc);
-         break;
-
-       case WM_LBUTTONUP:
-         button = 1;
-         goto buttonup0;
-
-       case WM_MBUTTONUP:
-         button = 2;
-         goto buttonup0;
-
-       case WM_RBUTTONUP:
-         button = 3;
-         goto buttonup0;
-
-       case WM_XBUTTONUP:
-         if (HIWORD (wparam) == XBUTTON1)
-           button = 4;
-         else
-           button = 5;
-
-       buttonup0:
-         bc = g_new (ButtonCallbackData, 1);
-         bc->event = (GdkEventButton *) gdk_event_new (GDK_BUTTON_RELEASE);
-         bc->status_icon = find_status_icon (wparam);
-         build_button_event (bc->status_icon->priv, bc->event, button);
-         g_idle_add (button_callback, bc);
-         break;
-
-       default :
-         break;
-       }
-       return 0;
-    }
-  else
-    {
-      return DefWindowProc (hwnd, message, wparam, lparam);
-    }
-}
-
-static HWND
-create_tray_observer (void)
-{
-  WNDCLASS    wclass;
-  static HWND hwnd = NULL;
-  ATOM        klass;
-  HINSTANCE   hmodule = GetModuleHandle (NULL);
-
-  if (hwnd)
-    return hwnd;
-
-  taskbar_created_msg = RegisterWindowMessage("TaskbarCreated");
-
-  memset (&wclass, 0, sizeof(WNDCLASS));
-  wclass.lpszClassName = "gtkstatusicon-observer";
-  wclass.lpfnWndProc   = wndproc;
-  wclass.hInstance     = hmodule;
-
-  klass = RegisterClass (&wclass);
-  if (!klass)
-    return NULL;
-
-  hwnd = CreateWindow (MAKEINTRESOURCE (klass),
-                       NULL, WS_POPUP,
-                       0, 0, 1, 1, NULL, NULL,
-                       hmodule, NULL);
-  if (!hwnd)
-    {
-      UnregisterClass (MAKEINTRESOURCE(klass), hmodule);
-      return NULL;
-    }
-
-  return hwnd;
-}
-
-#endif
-
-static void
-gtk_status_icon_init (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv;
-
-  priv = gtk_status_icon_get_instance_private (status_icon);
-  status_icon->priv = priv;
-
-  priv->image_def = gtk_image_definition_new_empty ();
-  priv->visible = TRUE;
-
-#ifdef GDK_WINDOWING_X11
-  if (GDK_IS_X11_DISPLAY (gdk_display_get_default ()))
-    {
-      priv->size         = 0;
-      priv->tray_icon = GTK_WIDGET (_gtk_tray_icon_new (NULL));
-
-      gtk_widget_add_events (GTK_WIDGET (priv->tray_icon),
-                             GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
-                             GDK_SCROLL_MASK);
-
-      g_signal_connect_swapped (priv->tray_icon, "key-press-event",
-                                G_CALLBACK (gtk_status_icon_key_press), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "popup-menu",
-                                G_CALLBACK (gtk_status_icon_popup_menu), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "notify::embedded",
-                                G_CALLBACK (gtk_status_icon_embedded_changed), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "notify::orientation",
-                                G_CALLBACK (gtk_status_icon_orientation_changed), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "notify::padding",
-                                G_CALLBACK (gtk_status_icon_padding_changed), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "notify::icon-size",
-                                G_CALLBACK (gtk_status_icon_icon_size_changed), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "notify::fg-color",
-                                G_CALLBACK (gtk_status_icon_fg_changed), status_icon);
-      g_signal_connect (priv->tray_icon, "notify::error-color",
-                        G_CALLBACK (gtk_status_icon_color_changed), status_icon);
-      g_signal_connect (priv->tray_icon, "notify::warning-color",
-                        G_CALLBACK (gtk_status_icon_color_changed), status_icon);
-      g_signal_connect (priv->tray_icon, "notify::success-color",
-                        G_CALLBACK (gtk_status_icon_color_changed), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "button-press-event",
-                                G_CALLBACK (gtk_status_icon_button_press), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "button-release-event",
-                                G_CALLBACK (gtk_status_icon_button_release), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "scroll-event",
-                                G_CALLBACK (gtk_status_icon_scroll), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "query-tooltip",
-                                G_CALLBACK (gtk_status_icon_query_tooltip), status_icon);
-      g_signal_connect_swapped (priv->tray_icon, "screen-changed",
-                                G_CALLBACK (gtk_status_icon_screen_changed), status_icon);
-      priv->image = gtk_image_new ();
-      gtk_widget_set_can_focus (priv->image, TRUE);
-      gtk_container_add (GTK_CONTAINER (priv->tray_icon), priv->image);
-      gtk_widget_show (priv->image);
-
-      /* Force-initialize the symbolic colors */
-      g_object_notify (G_OBJECT (priv->tray_icon), "fg-color");
-      g_object_notify (G_OBJECT (priv->tray_icon), "error-color");
-      g_object_notify (G_OBJECT (priv->tray_icon), "warning-color");
-      g_object_notify (G_OBJECT (priv->tray_icon), "success-color");
-
-      g_signal_connect_swapped (priv->image, "size-allocate",
-                                G_CALLBACK (gtk_status_icon_size_allocate), status_icon);
-    }
-#else /* !GDK_WINDOWING_X11 */
-  priv->dummy_widget = gtk_label_new ("");
-#endif
-
-#ifdef GDK_WINDOWING_WIN32
-
-  /* Get position and orientation of Windows taskbar. */
-  {
-    APPBARDATA abd;
-
-    abd.cbSize = sizeof (abd);
-    SHAppBarMessage (ABM_GETTASKBARPOS, &abd);
-    if (abd.rc.bottom - abd.rc.top > abd.rc.right - abd.rc.left)
-      priv->orientation = GTK_ORIENTATION_VERTICAL;
-    else
-      priv->orientation = GTK_ORIENTATION_HORIZONTAL;
-
-    priv->taskbar_top = abd.rc.top;
-  }
-
-  priv->last_click_x = priv->last_click_y = 0;
-
-  /* Are the system tray icons always 16 pixels square? */
-  priv->size         = 16;
-
-  memset (&priv->nid, 0, sizeof (priv->nid));
-
-  priv->nid.hWnd = create_tray_observer ();
-  priv->nid.uID = status_icon_id++;
-  priv->nid.uCallbackMessage = WM_GTK_TRAY_NOTIFICATION;
-  priv->nid.uFlags = NIF_MESSAGE;
-
-  /* To help win7 identify the icon create it with an application "unique" tip */
-  if (g_get_prgname ())
-  {
-    WCHAR *wcs = g_utf8_to_utf16 (g_get_prgname (), -1, NULL, NULL, NULL);
-
-    priv->nid.uFlags |= NIF_TIP;
-    wcsncpy (priv->nid.szTip, wcs, G_N_ELEMENTS (priv->nid.szTip) - 1);
-    priv->nid.szTip[G_N_ELEMENTS (priv->nid.szTip) - 1] = 0;
-    g_free (wcs);
-  }
-
-  if (!Shell_NotifyIconW (NIM_ADD, &priv->nid))
-    {
-      g_warning (G_STRLOC ": Shell_NotifyIcon(NIM_ADD) failed");
-      priv->nid.hWnd = NULL;
-    }
-
-  status_icons = g_slist_append (status_icons, status_icon);
-
-#endif
-       
-#ifdef GDK_WINDOWING_QUARTZ
-  QUARTZ_POOL_ALLOC;
-
-  priv->status_item = [[GtkQuartzStatusIcon alloc] initWithStatusIcon:status_icon];
-  priv->size = [priv->status_item getHeight];
-
-  QUARTZ_POOL_RELEASE;
-
-#endif 
-}
-
-static void
-gtk_status_icon_constructed (GObject *object)
-{
-  G_OBJECT_CLASS (gtk_status_icon_parent_class)->constructed (object);
-
-#ifdef GDK_WINDOWING_X11
-  {
-    GtkStatusIcon *status_icon = GTK_STATUS_ICON (object);
-    GtkStatusIconPrivate *priv = status_icon->priv;
-
-    if (priv->visible && priv->tray_icon)
-      gtk_widget_show (priv->tray_icon);
-  }
-#endif
-}
-
-static void
-gtk_status_icon_finalize (GObject *object)
-{
-  GtkStatusIcon *status_icon = GTK_STATUS_ICON (object);
-  GtkStatusIconPrivate *priv = status_icon->priv;
-
-  gtk_status_icon_reset_image_data (status_icon);
-  gtk_image_definition_unref (priv->image_def);
-
-#ifdef GDK_WINDOWING_X11
-  if (priv->tray_icon)
-    {
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_key_press, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_popup_menu, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_embedded_changed, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_orientation_changed, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_padding_changed, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_icon_size_changed, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_fg_changed, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_color_changed, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_button_press, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_button_release, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_scroll, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_query_tooltip, status_icon);
-      g_signal_handlers_disconnect_by_func (priv->tray_icon,
-                                            gtk_status_icon_screen_changed, status_icon);
-      gtk_widget_destroy (priv->image);
-      gtk_widget_destroy (priv->tray_icon);
-    }
-#else /* !GDK_WINDOWING_X11 */
-  gtk_widget_destroy (priv->dummy_widget);
-#endif
-
-#ifdef GDK_WINDOWING_WIN32
-  if (priv->nid.hWnd != NULL && priv->visible)
-    Shell_NotifyIconW (NIM_DELETE, &priv->nid);
-  if (priv->nid.hIcon)
-    DestroyIcon (priv->nid.hIcon);
-  g_free (priv->tooltip_text);
-
-  status_icons = g_slist_remove (status_icons, status_icon);
-#endif
-
-#ifdef GDK_WINDOWING_QUARTZ
-  QUARTZ_POOL_ALLOC;
-  [priv->status_item release];
-  QUARTZ_POOL_RELEASE;
-  g_free (priv->tooltip_text);
-#endif
-
-  G_OBJECT_CLASS (gtk_status_icon_parent_class)->finalize (object);
-}
-
-static void
-gtk_status_icon_set_property (GObject      *object,
-                             guint         prop_id,
-                             const GValue *value,
-                             GParamSpec   *pspec)
-{
-  GtkStatusIcon *status_icon = GTK_STATUS_ICON (object);
-
-  switch (prop_id)
-    {
-    case PROP_PIXBUF:
-      gtk_status_icon_set_from_pixbuf (status_icon, g_value_get_object (value));
-      break;
-    case PROP_FILE:
-      gtk_status_icon_set_from_file (status_icon, g_value_get_string (value));
-      break;
-    case PROP_STOCK:
-      gtk_status_icon_set_from_stock (status_icon, g_value_get_string (value));
-      break;
-    case PROP_ICON_NAME:
-      gtk_status_icon_set_from_icon_name (status_icon, g_value_get_string (value));
-      break;
-    case PROP_GICON:
-      gtk_status_icon_set_from_gicon (status_icon, g_value_get_object (value));
-      break;
-    case PROP_SCREEN:
-      gtk_status_icon_set_screen (status_icon, g_value_get_object (value));
-      break;
-    case PROP_VISIBLE:
-      gtk_status_icon_set_visible (status_icon, g_value_get_boolean (value));
-      break;
-    case PROP_HAS_TOOLTIP:
-      gtk_status_icon_set_has_tooltip (status_icon, g_value_get_boolean (value));
-      break;
-    case PROP_TOOLTIP_TEXT:
-      gtk_status_icon_set_tooltip_text (status_icon, g_value_get_string (value));
-      break;
-    case PROP_TOOLTIP_MARKUP:
-      gtk_status_icon_set_tooltip_markup (status_icon, g_value_get_string (value));
-      break;
-    case PROP_TITLE:
-      gtk_status_icon_set_title (status_icon, g_value_get_string (value));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-gtk_status_icon_get_property (GObject    *object,
-                             guint       prop_id,
-                             GValue     *value,
-                             GParamSpec *pspec)
-{
-  GtkStatusIcon *status_icon = GTK_STATUS_ICON (object);
-
-  switch (prop_id)
-    {
-    case PROP_PIXBUF:
-      g_value_set_object (value, gtk_status_icon_get_pixbuf (status_icon));
-      break;
-    case PROP_STOCK:
-      g_value_set_string (value, gtk_status_icon_get_stock (status_icon));
-      break;
-    case PROP_ICON_NAME:
-      g_value_set_string (value, gtk_status_icon_get_icon_name (status_icon));
-      break;
-    case PROP_GICON:
-      g_value_set_object (value, gtk_status_icon_get_gicon (status_icon));
-      break;
-    case PROP_STORAGE_TYPE:
-      g_value_set_enum (value, gtk_status_icon_get_storage_type (status_icon));
-      break;
-    case PROP_SIZE:
-      g_value_set_int (value, gtk_status_icon_get_size (status_icon));
-      break;
-    case PROP_SCREEN:
-      g_value_set_object (value, gtk_status_icon_get_screen (status_icon));
-      break;
-    case PROP_VISIBLE:
-      g_value_set_boolean (value, gtk_status_icon_get_visible (status_icon));
-      break;
-    case PROP_EMBEDDED:
-      g_value_set_boolean (value, gtk_status_icon_is_embedded (status_icon));
-      break;
-    case PROP_ORIENTATION:
-#ifdef GDK_WINDOWING_X11
-      if (status_icon->priv->tray_icon)
-        g_value_set_enum (value, _gtk_tray_icon_get_orientation (GTK_TRAY_ICON (status_icon->priv->tray_icon)));
-      else
-        g_value_set_enum (value, GTK_ORIENTATION_HORIZONTAL);
-#endif
-#ifdef GDK_WINDOWING_WIN32
-      g_value_set_enum (value, status_icon->priv->orientation);
-#endif
-      break;
-    case PROP_HAS_TOOLTIP:
-      g_value_set_boolean (value, gtk_status_icon_get_has_tooltip (status_icon));
-      break;
-    case PROP_TOOLTIP_TEXT:
-      g_value_set_string (value, gtk_status_icon_get_tooltip_text (status_icon));
-      break;
-    case PROP_TOOLTIP_MARKUP:
-      g_value_set_string (value, gtk_status_icon_get_tooltip_markup (status_icon));
-      break;
-    case PROP_TITLE:
-      g_value_set_string (value, gtk_status_icon_get_title (status_icon));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-/**
- * gtk_status_icon_new:
- * 
- * Creates an empty status icon object.
- * 
- * Returns: a new #GtkStatusIcon
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-GtkStatusIcon *
-gtk_status_icon_new (void)
-{
-  return g_object_new (GTK_TYPE_STATUS_ICON, NULL);
-}
-
-/**
- * gtk_status_icon_new_from_pixbuf:
- * @pixbuf: a #GdkPixbuf
- * 
- * Creates a status icon displaying @pixbuf. 
- *
- * The image will be scaled down to fit in the available 
- * space in the notification area, if necessary.
- * 
- * Returns: a new #GtkStatusIcon
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-GtkStatusIcon *
-gtk_status_icon_new_from_pixbuf (GdkPixbuf *pixbuf)
-{
-  return g_object_new (GTK_TYPE_STATUS_ICON,
-                      "pixbuf", pixbuf,
-                      NULL);
-}
-
-/**
- * gtk_status_icon_new_from_file:
- * @filename: (type filename): a filename
- * 
- * Creates a status icon displaying the file @filename. 
- *
- * The image will be scaled down to fit in the available 
- * space in the notification area, if necessary.
- * 
- * Returns: a new #GtkStatusIcon
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-GtkStatusIcon *
-gtk_status_icon_new_from_file (const gchar *filename)
-{
-  return g_object_new (GTK_TYPE_STATUS_ICON,
-                      "file", filename,
-                      NULL);
-}
-
-/**
- * gtk_status_icon_new_from_stock:
- * @stock_id: a stock icon id
- * 
- * Creates a status icon displaying a stock icon. Sample stock icon
- * names are #GTK_STOCK_OPEN, #GTK_STOCK_QUIT. You can register your 
- * own stock icon names, see gtk_icon_factory_add_default() and 
- * gtk_icon_factory_add(). 
- *
- * Returns: a new #GtkStatusIcon
- *
- * Since: 2.10
- *
- * Deprecated: 3.10: Use gtk_status_icon_new_from_icon_name() instead.
- **/
-GtkStatusIcon *
-gtk_status_icon_new_from_stock (const gchar *stock_id)
-{
-  return g_object_new (GTK_TYPE_STATUS_ICON,
-                      "stock", stock_id,
-                      NULL);
-}
-
-/**
- * gtk_status_icon_new_from_icon_name:
- * @icon_name: an icon name
- * 
- * Creates a status icon displaying an icon from the current icon theme.
- * If the current icon theme is changed, the icon will be updated 
- * appropriately.
- * 
- * Returns: a new #GtkStatusIcon
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-GtkStatusIcon *
-gtk_status_icon_new_from_icon_name (const gchar *icon_name)
-{
-  return g_object_new (GTK_TYPE_STATUS_ICON,
-                      "icon-name", icon_name,
-                      NULL);
-}
-
-/**
- * gtk_status_icon_new_from_gicon:
- * @icon: a #GIcon
- *
- * Creates a status icon displaying a #GIcon. If the icon is a
- * themed icon, it will be updated when the theme changes.
- *
- * Returns: a new #GtkStatusIcon
- *
- * Since: 2.14
- *
- * Deprecated: 3.14: Use notifications
- **/
-GtkStatusIcon *
-gtk_status_icon_new_from_gicon (GIcon *icon)
-{
-  return g_object_new (GTK_TYPE_STATUS_ICON,
-                      "gicon", icon,
-                      NULL);
-}
-
-static void
-emit_activate_signal (GtkStatusIcon *status_icon)
-{
-  g_signal_emit (status_icon,
-                status_icon_signals [ACTIVATE_SIGNAL], 0);
-}
-
-static void
-emit_popup_menu_signal (GtkStatusIcon *status_icon,
-                       guint          button,
-                       guint32        activate_time)
-{
-  g_signal_emit (status_icon,
-                status_icon_signals [POPUP_MENU_SIGNAL], 0,
-                button,
-                activate_time);
-}
-
-#ifdef GDK_WINDOWING_X11
-
-static gboolean
-emit_size_changed_signal (GtkStatusIcon *status_icon,
-                         gint           size)
-{
-  gboolean handled = FALSE;
-  
-  g_signal_emit (status_icon,
-                status_icon_signals [SIZE_CHANGED_SIGNAL], 0,
-                size,
-                &handled);
-
-  return handled;
-}
-
-#endif
-
-/* rounds the pixel size to the nearest size avaiable in the theme */
-static gint
-round_pixel_size (GtkWidget *widget, 
-                  gint       pixel_size)
-{
-  GtkIconSize s;
-  gint w, h, d, dist, size;
-
-  dist = G_MAXINT;
-  size = 0;
-
-  for (s = GTK_ICON_SIZE_MENU; s <= GTK_ICON_SIZE_DIALOG; s++)
-    {
-      if (gtk_icon_size_lookup (s, &w, &h))
-       {
-         d = MAX (abs (pixel_size - w), abs (pixel_size - h));
-         if (d < dist)
-           {
-             dist = d;
-              size = MAX (w, h);
-           }
-       }
-    }
-  
-  return size;
-}
-
-static void
-gtk_status_icon_update_image (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv = status_icon->priv;
-#ifdef GDK_WINDOWING_WIN32
-  HICON prev_hicon;
-#endif
-  GtkIconHelper *icon_helper;
-  cairo_surface_t *surface;
-  GtkWidget *widget;
-  GdkPixbuf *pixbuf;
-  gint round_size;
-
-#ifdef GDK_WINDOWING_X11
-  widget = priv->image;
-#else
-  widget = priv->dummy_widget;
-#endif
-
-  if (widget == NULL)
-    return;
-
-  round_size = round_pixel_size (widget, priv->size);
-
-  icon_helper = gtk_icon_helper_new (gtk_style_context_get_node (gtk_widget_get_style_context (widget)), widget);
-  _gtk_icon_helper_set_force_scale_pixbuf (icon_helper, TRUE);
-  _gtk_icon_helper_set_definition (icon_helper, priv->image_def);
-  _gtk_icon_helper_set_icon_size (icon_helper, GTK_ICON_SIZE_SMALL_TOOLBAR);
-  _gtk_icon_helper_set_pixel_size (icon_helper, round_size);
-  surface = gtk_icon_helper_load_surface (icon_helper, 1);
-  if (surface)
-    {
-      pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, round_size, round_size);
-      cairo_surface_destroy (surface);
-    }
-  else
-    pixbuf = NULL;
-  g_object_unref (icon_helper);
-
-  if (pixbuf != NULL)
-    {
-#ifdef GDK_WINDOWING_X11
-      gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), pixbuf);
-#endif
-#ifdef GDK_WINDOWING_WIN32
-      prev_hicon = priv->nid.hIcon;
-      priv->nid.hIcon = gdk_win32_pixbuf_to_hicon_libgtk_only (pixbuf);
-      priv->nid.uFlags |= NIF_ICON;
-      if (priv->nid.hWnd != NULL && priv->visible)
-        if (!Shell_NotifyIconW (NIM_MODIFY, &priv->nid))
-          g_warning (G_STRLOC ": Shell_NotifyIcon(NIM_MODIFY) failed");
-      if (prev_hicon)
-        DestroyIcon (prev_hicon);
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-      QUARTZ_POOL_ALLOC;
-      [priv->status_item setImage:pixbuf];
-      QUARTZ_POOL_RELEASE;
-#endif
-    }
-  else
-    {
-#ifdef GDK_WINDOWING_X11
-      gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), NULL);
-#endif
-#ifdef GDK_WINDOWING_WIN32
-      priv->nid.uFlags &= ~NIF_ICON;
-      if (priv->nid.hWnd != NULL && priv->visible)
-        if (!Shell_NotifyIconW (NIM_MODIFY, &priv->nid))
-          g_warning (G_STRLOC ": Shell_NotifyIcon(NIM_MODIFY) failed");
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-      [priv->status_item setImage:NULL];
-#endif
-    }
-
-  g_clear_object (&pixbuf);
-}
-
-#ifdef GDK_WINDOWING_X11
-
-static void
-gtk_status_icon_size_allocate (GtkStatusIcon *status_icon,
-                              GtkAllocation *allocation)
-{
-  GtkStatusIconPrivate *priv = status_icon->priv;
-  GtkOrientation orientation;
-  gint size;
-
-  orientation = _gtk_tray_icon_get_orientation (GTK_TRAY_ICON (priv->tray_icon));
-
-  if (orientation == GTK_ORIENTATION_HORIZONTAL)
-    size = allocation->height;
-  else
-    size = allocation->width;
-
-  if (priv->size - 1 > size || priv->size + 1 < size)
-    {
-      priv->size = size;
-
-      g_object_notify (G_OBJECT (status_icon), "size");
-
-      if (!emit_size_changed_signal (status_icon, size))
-       gtk_status_icon_update_image (status_icon);
-    }
-}
-
-static void
-gtk_status_icon_screen_changed (GtkStatusIcon *status_icon,
-                               GdkScreen *old_screen)
-{
-  GtkStatusIconPrivate *priv = status_icon->priv;
-
-  if (gtk_widget_get_screen (priv->tray_icon) != old_screen)
-    {
-      g_object_notify (G_OBJECT (status_icon), "screen");
-    }
-}
-
-static void
-gtk_status_icon_padding_changed (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv = status_icon->priv;
-  GtkOrientation orientation;
-  gint padding;
-
-  orientation = _gtk_tray_icon_get_orientation (GTK_TRAY_ICON (priv->tray_icon));
-  padding = _gtk_tray_icon_get_padding (GTK_TRAY_ICON (priv->tray_icon));
-
-  if (orientation == GTK_ORIENTATION_HORIZONTAL)
-    {
-      gtk_widget_set_margin_start (priv->image, padding);
-      gtk_widget_set_margin_end (priv->image, padding);
-    }
-  else
-    {
-      gtk_widget_set_margin_bottom (priv->image, padding);
-      gtk_widget_set_margin_top (priv->image, padding);
-    }
-}
-
-static void
-gtk_status_icon_icon_size_changed (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv = status_icon->priv;
-  gint icon_size;
-
-  icon_size = _gtk_tray_icon_get_icon_size (GTK_TRAY_ICON (priv->tray_icon));
-
-  if (icon_size != 0)
-    gtk_image_set_pixel_size (GTK_IMAGE (priv->image), icon_size);
-  else
-    gtk_image_set_pixel_size (GTK_IMAGE (priv->image), -1);
-}
-
-static void
-gtk_status_icon_embedded_changed (GtkStatusIcon *status_icon)
-{
-  gtk_status_icon_padding_changed (status_icon);
-  gtk_status_icon_icon_size_changed (status_icon);
-  g_object_notify (G_OBJECT (status_icon), "embedded");
-}
-
-static void
-gtk_status_icon_orientation_changed (GtkStatusIcon *status_icon)
-{
-  gtk_status_icon_padding_changed (status_icon);
-  g_object_notify (G_OBJECT (status_icon), "orientation");
-}
-
-static void
-gtk_status_icon_fg_changed (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv = status_icon->priv;
-  GdkRGBA *rgba;
-
-  g_object_get (priv->tray_icon, "fg-color", &rgba, NULL);
-
-  gtk_widget_override_color (priv->image, GTK_STATE_FLAG_NORMAL, rgba);
-
-  gdk_rgba_free (rgba);
-}
-
-static void
-gtk_status_icon_color_changed (GtkTrayIcon   *tray,
-                               GParamSpec    *pspec,
-                               GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv = status_icon->priv;
-  const gchar *name;
-
-  switch (pspec->name[0])
-    {
-    case 'e':
-      name = "error";
-      break;
-    case 'w':
-      name = "warning";
-      break;
-    case 's':
-      name = "success";
-      break;
-    default:
-      name = NULL;
-      break;
-    }
-
-  if (name)
-    {
-      GdkRGBA rgba;
-
-      g_object_get (priv->tray_icon, pspec->name, &rgba, NULL);
-
-      rgba.alpha = 1;
-
-      gtk_widget_override_symbolic_color (priv->image, name, &rgba);
-    }
-}
-
-static gboolean
-gtk_status_icon_key_press (GtkStatusIcon  *status_icon,
-                          GdkEventKey    *event)
-{
-  guint state, keyval;
-
-  state = event->state & gtk_accelerator_get_default_mod_mask ();
-  keyval = event->keyval;
-  if (state == 0 &&
-      (keyval == GDK_KEY_Return ||
-       keyval == GDK_KEY_KP_Enter ||
-       keyval == GDK_KEY_ISO_Enter ||
-       keyval == GDK_KEY_space ||
-       keyval == GDK_KEY_KP_Space))
-    {
-      emit_activate_signal (status_icon);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-static void
-gtk_status_icon_popup_menu (GtkStatusIcon  *status_icon)
-{
-  emit_popup_menu_signal (status_icon, 0, gtk_get_current_event_time ());
-}
-
-#endif  /* GDK_WINDOWING_X11 */
-
-static gboolean
-gtk_status_icon_button_press (GtkStatusIcon  *status_icon,
-                             GdkEventButton *event)
-{
-  gboolean handled = FALSE;
-
-  g_signal_emit (status_icon,
-                status_icon_signals [BUTTON_PRESS_EVENT_SIGNAL], 0,
-                event, &handled);
-  if (handled)
-    return TRUE;
-
-  if (gdk_event_triggers_context_menu ((GdkEvent *) event))
-    {
-      emit_popup_menu_signal (status_icon, event->button, event->time);
-      return TRUE;
-    }
-  else if (event->button == GDK_BUTTON_PRIMARY && event->type == GDK_BUTTON_PRESS)
-    {
-      emit_activate_signal (status_icon);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-static gboolean
-gtk_status_icon_button_release (GtkStatusIcon  *status_icon,
-                               GdkEventButton *event)
-{
-  gboolean handled = FALSE;
-  g_signal_emit (status_icon,
-                status_icon_signals [BUTTON_RELEASE_EVENT_SIGNAL], 0,
-                event, &handled);
-  return handled;
-}
-
-#ifdef GDK_WINDOWING_X11
-
-static gboolean
-gtk_status_icon_scroll (GtkStatusIcon  *status_icon,
-                       GdkEventScroll *event)
-{
-  gboolean handled = FALSE;
-  g_signal_emit (status_icon,
-                status_icon_signals [SCROLL_EVENT_SIGNAL], 0,
-                event, &handled);
-  return handled;
-}
-
-static gboolean
-gtk_status_icon_query_tooltip (GtkStatusIcon *status_icon,
-                              gint           x,
-                              gint           y,
-                              gboolean       keyboard_tip,
-                              GtkTooltip    *tooltip)
-{
-  gboolean handled = FALSE;
-  g_signal_emit (status_icon,
-                status_icon_signals [QUERY_TOOLTIP_SIGNAL], 0,
-                x, y, keyboard_tip, tooltip, &handled);
-  return handled;
-}
-
-#endif /* GDK_WINDOWING_X11 */
-
-static void
-gtk_status_icon_reset_image_data (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv = status_icon->priv;
-  GtkImageType storage_type = gtk_image_definition_get_storage_type (priv->image_def);
-
-  switch (storage_type)
-  {
-    case GTK_IMAGE_PIXBUF:
-      g_object_notify (G_OBJECT (status_icon), "pixbuf");
-      break;
-    case GTK_IMAGE_STOCK:
-      g_object_notify (G_OBJECT (status_icon), "stock");
-      break;    
-    case GTK_IMAGE_ICON_NAME:
-      g_object_notify (G_OBJECT (status_icon), "icon-name");
-      break;
-    case GTK_IMAGE_GICON:
-      g_object_notify (G_OBJECT (status_icon), "gicon");
-      break;
-    case GTK_IMAGE_EMPTY:
-      break;
-    default:
-      g_assert_not_reached ();
-      break;
-  }
-
-  gtk_image_definition_unref (priv->image_def);
-  priv->image_def = gtk_image_definition_new_empty ();
-  g_object_notify (G_OBJECT (status_icon), "storage-type");
-}
-
-static void
-gtk_status_icon_take_image (GtkStatusIcon      *status_icon,
-                            GtkImageDefinition *def)
-{
-  GtkStatusIconPrivate *priv = status_icon->priv;
-
-  g_object_freeze_notify (G_OBJECT (status_icon));
-
-  gtk_status_icon_reset_image_data (status_icon);
-
-  g_object_notify (G_OBJECT (status_icon), "storage-type");
-
-  if (def != NULL)
-    {
-      gtk_image_definition_unref (priv->image_def);
-      priv->image_def = def;
-      /* the icon size we pass here doesn't really matter, since
-       * we force a pixel size before doing the actual rendering anyway.
-       */
-      switch (gtk_image_definition_get_storage_type (def))
-        {
-        case GTK_IMAGE_PIXBUF:
-          g_object_notify (G_OBJECT (status_icon), "pixbuf");
-          break;
-        case GTK_IMAGE_STOCK:
-          g_object_notify (G_OBJECT (status_icon), "stock");
-          break;
-        case GTK_IMAGE_ICON_NAME:
-          g_object_notify (G_OBJECT (status_icon), "icon-name");
-          break;
-        case GTK_IMAGE_GICON:
-          g_object_notify (G_OBJECT (status_icon), "gicon");
-          break;
-        default:
-          g_warning ("Image type %u not handled by GtkStatusIcon", 
-                     gtk_image_definition_get_storage_type (def));
-        }
-    }
-
-  g_object_thaw_notify (G_OBJECT (status_icon));
-
-  gtk_status_icon_update_image (status_icon);
-}
-
-/**
- * gtk_status_icon_set_from_pixbuf:
- * @status_icon: a #GtkStatusIcon
- * @pixbuf: (allow-none): a #GdkPixbuf or %NULL
- *
- * Makes @status_icon display @pixbuf.
- * See gtk_status_icon_new_from_pixbuf() for details.
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-void
-gtk_status_icon_set_from_pixbuf (GtkStatusIcon *status_icon,
-                                GdkPixbuf     *pixbuf)
-{
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-  g_return_if_fail (pixbuf == NULL || GDK_IS_PIXBUF (pixbuf));
-
-  gtk_status_icon_take_image (status_icon,
-                             gtk_image_definition_new_pixbuf (pixbuf, 1));
-}
-
-/**
- * gtk_status_icon_set_from_file:
- * @status_icon: a #GtkStatusIcon
- * @filename: (type filename): a filename
- * 
- * Makes @status_icon display the file @filename.
- * See gtk_status_icon_new_from_file() for details.
- *
- * Since: 2.10 
- *
- * Deprecated: 3.14: Use notifications
- **/
-void
-gtk_status_icon_set_from_file (GtkStatusIcon *status_icon,
-                              const gchar   *filename)
-{
-  GdkPixbuf *pixbuf;
-  
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-  g_return_if_fail (filename != NULL);
-  
-  pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
-  gtk_status_icon_set_from_pixbuf (status_icon, pixbuf);
-  
-  if (pixbuf)
-    g_object_unref (pixbuf);
-}
-
-/**
- * gtk_status_icon_set_from_stock:
- * @status_icon: a #GtkStatusIcon
- * @stock_id: a stock icon id
- * 
- * Makes @status_icon display the stock icon with the id @stock_id.
- * See gtk_status_icon_new_from_stock() for details.
- *
- * Since: 2.10
- *
- * Deprecated: 3.10: Use gtk_status_icon_set_from_icon_name() instead.
- **/
-void
-gtk_status_icon_set_from_stock (GtkStatusIcon *status_icon,
-                               const gchar   *stock_id)
-{
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-  g_return_if_fail (stock_id != NULL);
-
-  gtk_status_icon_take_image (status_icon,
-                             gtk_image_definition_new_stock (stock_id));
-}
-
-/**
- * gtk_status_icon_set_from_icon_name:
- * @status_icon: a #GtkStatusIcon
- * @icon_name: an icon name
- * 
- * Makes @status_icon display the icon named @icon_name from the 
- * current icon theme.
- * See gtk_status_icon_new_from_icon_name() for details.
- *
- * Since: 2.10 
- *
- * Deprecated: 3.14: Use notifications
- **/
-void
-gtk_status_icon_set_from_icon_name (GtkStatusIcon *status_icon,
-                                   const gchar   *icon_name)
-{
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-  g_return_if_fail (icon_name != NULL);
-
-  gtk_status_icon_take_image (status_icon,
-                             gtk_image_definition_new_icon_name (icon_name));
-}
-
-/**
- * gtk_status_icon_set_from_gicon:
- * @status_icon: a #GtkStatusIcon
- * @icon: a GIcon
- *
- * Makes @status_icon display the #GIcon.
- * See gtk_status_icon_new_from_gicon() for details.
- *
- * Since: 2.14
- *
- * Deprecated: 3.14: Use notifications
- **/
-void
-gtk_status_icon_set_from_gicon (GtkStatusIcon *status_icon,
-                                GIcon         *icon)
-{
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-  g_return_if_fail (icon != NULL);
-
-  gtk_status_icon_take_image (status_icon,
-                             gtk_image_definition_new_gicon (icon));
-}
-
-/**
- * gtk_status_icon_get_storage_type:
- * @status_icon: a #GtkStatusIcon
- * 
- * Gets the type of representation being used by the #GtkStatusIcon
- * to store image data. If the #GtkStatusIcon has no image data,
- * the return value will be %GTK_IMAGE_EMPTY. 
- * 
- * Returns: the image representation being used
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-GtkImageType
-gtk_status_icon_get_storage_type (GtkStatusIcon *status_icon)
-{
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), GTK_IMAGE_EMPTY);
-
-  return gtk_image_definition_get_storage_type (status_icon->priv->image_def);
-}
-/**
- * gtk_status_icon_get_pixbuf:
- * @status_icon: a #GtkStatusIcon
- * 
- * Gets the #GdkPixbuf being displayed by the #GtkStatusIcon.
- * The storage type of the status icon must be %GTK_IMAGE_EMPTY or
- * %GTK_IMAGE_PIXBUF (see gtk_status_icon_get_storage_type()).
- * The caller of this function does not own a reference to the
- * returned pixbuf.
- * 
- * Returns: (nullable) (transfer none): the displayed pixbuf,
- *     or %NULL if the image is empty.
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-GdkPixbuf *
-gtk_status_icon_get_pixbuf (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv;
-
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), NULL);
-
-  priv = status_icon->priv;
-
-  return gtk_image_definition_get_pixbuf (priv->image_def);
-}
-
-/**
- * gtk_status_icon_get_stock:
- * @status_icon: a #GtkStatusIcon
- * 
- * Gets the id of the stock icon being displayed by the #GtkStatusIcon.
- * The storage type of the status icon must be %GTK_IMAGE_EMPTY or
- * %GTK_IMAGE_STOCK (see gtk_status_icon_get_storage_type()).
- * The returned string is owned by the #GtkStatusIcon and should not
- * be freed or modified.
- * 
- * Returns: (nullable): stock id of the displayed stock icon,
- *   or %NULL if the image is empty.
- *
- * Since: 2.10
- *
- * Deprecated: 3.10: Use gtk_status_icon_get_icon_name() instead.
- **/
-const gchar *
-gtk_status_icon_get_stock (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv;
-
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), NULL);
-
-  priv = status_icon->priv;
-
-  return gtk_image_definition_get_stock (priv->image_def);
-}
-
-/**
- * gtk_status_icon_get_icon_name:
- * @status_icon: a #GtkStatusIcon
- * 
- * Gets the name of the icon being displayed by the #GtkStatusIcon.
- * The storage type of the status icon must be %GTK_IMAGE_EMPTY or
- * %GTK_IMAGE_ICON_NAME (see gtk_status_icon_get_storage_type()).
- * The returned string is owned by the #GtkStatusIcon and should not
- * be freed or modified.
- * 
- * Returns: (nullable): name of the displayed icon, or %NULL if the image is empty.
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-const gchar *
-gtk_status_icon_get_icon_name (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), NULL);
-
-  priv = status_icon->priv;
-
-  return gtk_image_definition_get_icon_name (priv->image_def);
-}
-
-/**
- * gtk_status_icon_get_gicon:
- * @status_icon: a #GtkStatusIcon
- *
- * Retrieves the #GIcon being displayed by the #GtkStatusIcon.
- * The storage type of the status icon must be %GTK_IMAGE_EMPTY or
- * %GTK_IMAGE_GICON (see gtk_status_icon_get_storage_type()).
- * The caller of this function does not own a reference to the
- * returned #GIcon.
- *
- * If this function fails, @icon is left unchanged;
- *
- * Returns: (nullable) (transfer none): the displayed icon, or %NULL if the image is empty
- *
- * Since: 2.14
- *
- * Deprecated: 3.14: Use notifications
- **/
-GIcon *
-gtk_status_icon_get_gicon (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv;
-
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), NULL);
-
-  priv = status_icon->priv;
-
-  return gtk_image_definition_get_gicon (priv->image_def);
-}
-
-/**
- * gtk_status_icon_get_size:
- * @status_icon: a #GtkStatusIcon
- * 
- * Gets the size in pixels that is available for the image. 
- * Stock icons and named icons adapt their size automatically
- * if the size of the notification area changes. For other
- * storage types, the size-changed signal can be used to
- * react to size changes.
- *
- * Note that the returned size is only meaningful while the 
- * status icon is embedded (see gtk_status_icon_is_embedded()).
- * 
- * Returns: the size that is available for the image
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-gint
-gtk_status_icon_get_size (GtkStatusIcon *status_icon)
-{
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), 0);
-
-  return status_icon->priv->size;
-}
-
-/**
- * gtk_status_icon_set_screen:
- * @status_icon: a #GtkStatusIcon
- * @screen: a #GdkScreen
- *
- * Sets the #GdkScreen where @status_icon is displayed; if
- * the icon is already mapped, it will be unmapped, and
- * then remapped on the new screen.
- *
- * Since: 2.12
- *
- * Deprecated: 3.14: Use notifications
- */
-void
-gtk_status_icon_set_screen (GtkStatusIcon *status_icon,
-                            GdkScreen     *screen)
-{
-  g_return_if_fail (GDK_IS_SCREEN (screen));
-
-#ifdef GDK_WINDOWING_X11
-  if (status_icon->priv->tray_icon)
-    gtk_window_set_screen (GTK_WINDOW (status_icon->priv->tray_icon), screen);
-#endif
-}
-
-/**
- * gtk_status_icon_get_screen:
- * @status_icon: a #GtkStatusIcon
- *
- * Returns the #GdkScreen associated with @status_icon.
- *
- * Returns: (transfer none): a #GdkScreen.
- *
- * Since: 2.12
- *
- * Deprecated: 3.14: Use notifications
- */
-GdkScreen *
-gtk_status_icon_get_screen (GtkStatusIcon *status_icon)
-{
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), NULL);
-
-#ifdef GDK_WINDOWING_X11
-  if (status_icon->priv->tray_icon)
-    return gtk_window_get_screen (GTK_WINDOW (status_icon->priv->tray_icon));
-  else
-#endif
-  return gdk_screen_get_default ();
-}
-
-/**
- * gtk_status_icon_set_visible:
- * @status_icon: a #GtkStatusIcon
- * @visible: %TRUE to show the status icon, %FALSE to hide it
- * 
- * Shows or hides a status icon.
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-void
-gtk_status_icon_set_visible (GtkStatusIcon *status_icon,
-                            gboolean       visible)
-{
-  GtkStatusIconPrivate *priv;
-
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-
-  priv = status_icon->priv;
-
-  visible = visible != FALSE;
-
-  if (priv->visible != visible)
-    {
-      priv->visible = visible;
-
-#ifdef GDK_WINDOWING_X11
-      if (priv->tray_icon)
-        {
-          if (visible)
-           gtk_widget_show (priv->tray_icon);
-          else if (gtk_widget_get_realized (priv->tray_icon))
-            {
-             gtk_widget_hide (priv->tray_icon);
-             gtk_widget_unrealize (priv->tray_icon);
-            }
-        }
-#endif
-#ifdef GDK_WINDOWING_WIN32
-      if (priv->nid.hWnd != NULL)
-       {
-         if (visible)
-           Shell_NotifyIconW (NIM_ADD, &priv->nid);
-         else
-           Shell_NotifyIconW (NIM_DELETE, &priv->nid);
-       }
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-      QUARTZ_POOL_ALLOC;
-      [priv->status_item setVisible:visible];
-      QUARTZ_POOL_RELEASE;
-#endif
-      g_object_notify (G_OBJECT (status_icon), "visible");
-    }
-}
-
-/**
- * gtk_status_icon_get_visible:
- * @status_icon: a #GtkStatusIcon
- * 
- * Returns whether the status icon is visible or not. 
- * Note that being visible does not guarantee that 
- * the user can actually see the icon, see also 
- * gtk_status_icon_is_embedded().
- * 
- * Returns: %TRUE if the status icon is visible
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-gboolean
-gtk_status_icon_get_visible (GtkStatusIcon *status_icon)
-{
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), FALSE);
-
-  return status_icon->priv->visible;
-}
-
-/**
- * gtk_status_icon_is_embedded:
- * @status_icon: a #GtkStatusIcon
- * 
- * Returns whether the status icon is embedded in a notification
- * area. 
- * 
- * Returns: %TRUE if the status icon is embedded in
- *   a notification area.
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-gboolean
-gtk_status_icon_is_embedded (GtkStatusIcon *status_icon)
-{
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), FALSE);
-
-#ifdef GDK_WINDOWING_X11
-  if (status_icon->priv->tray_icon &&
-      gtk_plug_get_embedded (GTK_PLUG (status_icon->priv->tray_icon)))
-    return TRUE;
-  else
-    return FALSE;
-#endif
-#ifdef GDK_WINDOWING_WIN32
-  return TRUE;
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-  return TRUE;
-#endif
-}
-
-/**
- * gtk_status_icon_position_menu:
- * @menu: the #GtkMenu
- * @x: (inout): return location for the x position
- * @y: (inout): return location for the y position
- * @push_in: (out): whether the first menu item should be offset
- *           (pushed in) to be aligned with the menu popup position
- *           (only useful for GtkOptionMenu).
- * @user_data: (type GtkStatusIcon): the status icon to position the menu on
- *
- * Menu positioning function to use with gtk_menu_popup()
- * to position @menu aligned to the status icon @user_data.
- * 
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- **/
-void
-gtk_status_icon_position_menu (GtkMenu  *menu,
-                              gint     *x,
-                              gint     *y,
-                              gboolean *push_in,
-                              gpointer  user_data)
-{
-#ifdef GDK_WINDOWING_X11
-  GtkStatusIcon *status_icon = GTK_STATUS_ICON (user_data);
-  GtkStatusIconPrivate *priv = status_icon->priv;
-  GtkAllocation allocation;
-  GtkTrayIcon *tray_icon;
-  GtkWidget *widget;
-  GdkScreen *screen;
-  GtkTextDirection direction;
-  GtkRequisition menu_req;
-  GdkRectangle monitor;
-  GdkWindow *window;
-  gint monitor_num, height, width, xoffset, yoffset;
-
-  g_return_if_fail (GTK_IS_MENU (menu));
-  g_return_if_fail (GTK_IS_STATUS_ICON (user_data));
-
-  if (priv->tray_icon == NULL)
-    {
-      *x = 0;
-      *y = 0;
-      return;
-    }
-
-  tray_icon = GTK_TRAY_ICON (priv->tray_icon);
-  widget = priv->tray_icon;
-
-  direction = gtk_widget_get_direction (widget);
-
-  screen = gtk_widget_get_screen (widget);
-  gtk_menu_set_screen (menu, screen);
-
-  window = gtk_widget_get_window (widget);
-  monitor_num = gdk_screen_get_monitor_at_window (screen, window);
-  if (monitor_num < 0)
-    monitor_num = 0;
-  gtk_menu_set_monitor (menu, monitor_num);
-
-  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
-
-  gdk_window_get_origin (window, x, y);
-
-  menu_req.width = gtk_widget_get_allocated_width (GTK_WIDGET (menu));
-  menu_req.height = gtk_widget_get_allocated_height (GTK_WIDGET (menu));
-
-  gtk_widget_get_allocation (widget, &allocation);
-  if (_gtk_tray_icon_get_orientation (tray_icon) == GTK_ORIENTATION_VERTICAL)
-    {
-      width = 0;
-      height = allocation.height;
-      xoffset = allocation.width;
-      yoffset = 0;
-    }
-  else
-    {
-      width = allocation.width;
-      height = 0;
-      xoffset = 0;
-      yoffset = allocation.height;
-    }
-
-  if (direction == GTK_TEXT_DIR_RTL)
-    {
-      if ((*x - (menu_req.width - width)) >= monitor.x)
-        *x -= menu_req.width - width;
-      else if ((*x + xoffset + menu_req.width) < (monitor.x + monitor.width))
-        *x += xoffset;
-      else if ((monitor.x + monitor.width - (*x + xoffset)) < *x)
-        *x -= menu_req.width - width;
-      else
-        *x += xoffset;
-    }
-  else
-    {
-      if ((*x + xoffset + menu_req.width) < (monitor.x + monitor.width))
-        *x += xoffset;
-      else if ((*x - (menu_req.width - width)) >= monitor.x)
-        *x -= menu_req.width - width;
-      else if ((monitor.x + monitor.width - (*x + xoffset)) > *x)
-        *x += xoffset;
-      else 
-        *x -= menu_req.width - width;
-    }
-
-  if ((*y + yoffset + menu_req.height) < (monitor.y + monitor.height))
-    *y += yoffset;
-  else if ((*y - (menu_req.height - height)) >= monitor.y)
-    *y -= menu_req.height - height;
-  else if (monitor.y + monitor.height - (*y + yoffset) > *y)
-    *y += yoffset;
-  else 
-    *y -= menu_req.height - height;
-
-  *push_in = FALSE;
-#endif /* GDK_WINDOWING_X11 */
-
-#ifdef GDK_WINDOWING_WIN32
-  GtkStatusIcon *status_icon;
-  GtkStatusIconPrivate *priv;
-  GtkRequisition menu_req;
-  
-  g_return_if_fail (GTK_IS_MENU (menu));
-  g_return_if_fail (GTK_IS_STATUS_ICON (user_data));
-
-  status_icon = GTK_STATUS_ICON (user_data);
-  priv = status_icon->priv;
-
-  gtk_widget_get_preferred_size (GTK_WIDGET (menu), &menu_req, NULL);
-
-  *x = priv->last_click_x;
-  *y = priv->taskbar_top - menu_req.height;
-
-  *push_in = TRUE;
-#endif
-}
-
-/**
- * gtk_status_icon_get_geometry:
- * @status_icon: a #GtkStatusIcon
- * @screen: (out) (transfer none) (allow-none): return location for
- *          the screen, or %NULL if the information is not needed
- * @area: (out) (allow-none): return location for the area occupied by
- *        the status icon, or %NULL
- * @orientation: (out) (allow-none): return location for the
- *    orientation of the panel in which the status icon is embedded,
- *    or %NULL. A panel at the top or bottom of the screen is
- *    horizontal, a panel at the left or right is vertical.
- *
- * Obtains information about the location of the status icon
- * on screen. This information can be used to e.g. position 
- * popups like notification bubbles. 
- *
- * See gtk_status_icon_position_menu() for a more convenient 
- * alternative for positioning menus.
- *
- * Note that some platforms do not allow GTK+ to provide 
- * this information, and even on platforms that do allow it,
- * the information is not reliable unless the status icon
- * is embedded in a notification area, see
- * gtk_status_icon_is_embedded().
- *
- * Returns: %TRUE if the location information has 
- *               been filled in
- *
- * Since: 2.10
- *
- * Deprecated: 3.14: Use notifications
- */
-gboolean
-gtk_status_icon_get_geometry (GtkStatusIcon    *status_icon,
-                             GdkScreen       **screen,
-                             GdkRectangle     *area,
-                             GtkOrientation   *orientation)
-{
-#ifdef GDK_WINDOWING_X11   
-  GtkStatusIconPrivate *priv = status_icon->priv;
-  GtkAllocation allocation;
-  GtkWidget *widget;
-  gint x, y;
-
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), FALSE);
-
-  if (priv->tray_icon == NULL)
-    return FALSE;
-
-  widget = priv->tray_icon;
-
-  if (screen)
-    *screen = gtk_widget_get_screen (widget);
-
-  if (area)
-    {
-      gdk_window_get_origin (gtk_widget_get_window (widget),
-                             &x, &y);
-
-      gtk_widget_get_allocation (widget, &allocation);
-      area->x = x;
-      area->y = y;
-      area->width = allocation.width;
-      area->height = allocation.height;
-    }
-
-  if (orientation)
-    *orientation = _gtk_tray_icon_get_orientation (GTK_TRAY_ICON (widget));
-
-  return TRUE;
-#else
-  return FALSE;
-#endif /* GDK_WINDOWING_X11 */
-}
-
-/**
- * gtk_status_icon_set_has_tooltip:
- * @status_icon: a #GtkStatusIcon
- * @has_tooltip: whether or not @status_icon has a tooltip
- *
- * Sets the has-tooltip property on @status_icon to @has_tooltip.
- * See #GtkStatusIcon:has-tooltip for more information.
- *
- * Since: 2.16
- *
- * Deprecated: 3.14: Use notifications
- */
-void
-gtk_status_icon_set_has_tooltip (GtkStatusIcon *status_icon,
-                                gboolean       has_tooltip)
-{
-  GtkStatusIconPrivate *priv;
-  gboolean changed = FALSE;
-
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-
-  priv = status_icon->priv;
-
-#ifdef GDK_WINDOWING_X11
-  if (priv->tray_icon)
-    {
-      if (gtk_widget_get_has_tooltip (priv->tray_icon) != has_tooltip)
-        {
-          gtk_widget_set_has_tooltip (priv->tray_icon, has_tooltip);
-          changed = TRUE;
-        }
-    }
-#endif
-#ifdef GDK_WINDOWING_WIN32
-  changed = TRUE;
-  if (!has_tooltip && priv->tooltip_text)
-    gtk_status_icon_set_tooltip_text (status_icon, NULL);
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-  changed = TRUE;
-  if (!has_tooltip && priv->tooltip_text)
-    gtk_status_icon_set_tooltip_text (status_icon, NULL);
-#endif
-
-  if (changed)
-    g_object_notify (G_OBJECT (status_icon), "has-tooltip");
-}
-
-/**
- * gtk_status_icon_get_has_tooltip:
- * @status_icon: a #GtkStatusIcon
- *
- * Returns the current value of the has-tooltip property.
- * See #GtkStatusIcon:has-tooltip for more information.
- *
- * Returns: current value of has-tooltip on @status_icon.
- *
- * Since: 2.16
- *
- * Deprecated: 3.14: Use notifications
- */
-gboolean
-gtk_status_icon_get_has_tooltip (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv;
-  gboolean has_tooltip = FALSE;
-
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), FALSE);
-
-  priv = status_icon->priv;
-
-#ifdef GDK_WINDOWING_X11
-  if (priv->tray_icon)
-    has_tooltip = gtk_widget_get_has_tooltip (priv->tray_icon);
-#endif
-#ifdef GDK_WINDOWING_WIN32
-  has_tooltip = (priv->tooltip_text != NULL);
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-  has_tooltip = (priv->tooltip_text != NULL);
-#endif
-
-  return has_tooltip;
-}
-
-/**
- * gtk_status_icon_set_tooltip_text:
- * @status_icon: a #GtkStatusIcon
- * @text: the contents of the tooltip for @status_icon
- *
- * Sets @text as the contents of the tooltip.
- *
- * This function will take care of setting #GtkStatusIcon:has-tooltip to
- * %TRUE and of the default handler for the #GtkStatusIcon::query-tooltip
- * signal.
- *
- * See also the #GtkStatusIcon:tooltip-text property and
- * gtk_tooltip_set_text().
- *
- * Since: 2.16
- *
- * Deprecated: 3.14: Use notifications
- */
-void
-gtk_status_icon_set_tooltip_text (GtkStatusIcon *status_icon,
-                                 const gchar   *text)
-{
-  GtkStatusIconPrivate *priv;
-
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-
-  priv = status_icon->priv;
-
-#ifdef GDK_WINDOWING_X11
-  if (priv->tray_icon)
-    gtk_widget_set_tooltip_text (priv->tray_icon, text);
-#endif
-#ifdef GDK_WINDOWING_WIN32
-  if (text == NULL)
-    priv->nid.uFlags &= ~NIF_TIP;
-  else
-    {
-      WCHAR *wcs = g_utf8_to_utf16 (text, -1, NULL, NULL, NULL);
-
-      priv->nid.uFlags |= NIF_TIP;
-      wcsncpy (priv->nid.szTip, wcs, G_N_ELEMENTS (priv->nid.szTip) - 1);
-      priv->nid.szTip[G_N_ELEMENTS (priv->nid.szTip) - 1] = 0;
-      g_free (wcs);
-    }
-  if (priv->nid.hWnd != NULL && priv->visible)
-    if (!Shell_NotifyIconW (NIM_MODIFY, &priv->nid))
-      g_warning (G_STRLOC ": Shell_NotifyIconW(NIM_MODIFY) failed");
-
-  g_free (priv->tooltip_text);
-  priv->tooltip_text = g_strdup (text);
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-  QUARTZ_POOL_ALLOC;
-  [priv->status_item setToolTip:text];
-  QUARTZ_POOL_RELEASE;
-
-  g_free (priv->tooltip_text);
-  priv->tooltip_text = g_strdup (text);
-#endif
-}
-
-/**
- * gtk_status_icon_get_tooltip_text:
- * @status_icon: a #GtkStatusIcon
- *
- * Gets the contents of the tooltip for @status_icon.
- *
- * Returns: (nullable): the tooltip text, or %NULL. You should free the
- *   returned string with g_free() when done.
- *
- * Since: 2.16
- *
- * Deprecated: 3.14: Use notifications
- */
-gchar *
-gtk_status_icon_get_tooltip_text (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv;
-  gchar *tooltip_text = NULL;
-
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), NULL);
-
-  priv = status_icon->priv;
-
-#ifdef GDK_WINDOWING_X11
-  if (priv->tray_icon)
-    tooltip_text = gtk_widget_get_tooltip_text (priv->tray_icon);
-#endif
-#ifdef GDK_WINDOWING_WIN32
-  if (priv->tooltip_text)
-    tooltip_text = g_strdup (priv->tooltip_text);
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-  if (priv->tooltip_text)
-    tooltip_text = g_strdup (priv->tooltip_text);
-#endif
-
-  return tooltip_text;
-}
-
-/**
- * gtk_status_icon_set_tooltip_markup:
- * @status_icon: a #GtkStatusIcon
- * @markup: (allow-none): the contents of the tooltip for @status_icon, or %NULL
- *
- * Sets @markup as the contents of the tooltip, which is marked up with
- *  the [Pango text markup language][PangoMarkupFormat].
- *
- * This function will take care of setting #GtkStatusIcon:has-tooltip to %TRUE
- * and of the default handler for the #GtkStatusIcon::query-tooltip signal.
- *
- * See also the #GtkStatusIcon:tooltip-markup property and
- * gtk_tooltip_set_markup().
- *
- * Since: 2.16
- *
- * Deprecated: 3.14: Use notifications
- */
-void
-gtk_status_icon_set_tooltip_markup (GtkStatusIcon *status_icon,
-                                   const gchar   *markup)
-{
-#ifdef GDK_WINDOWING_X11
-  GtkStatusIconPrivate *priv;
-#endif
-#if defined (GDK_WINDOWING_WIN32) || defined (GDK_WINDOWING_QUARTZ)
-  gchar *text = NULL;
-#endif
-
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-
-#ifdef GDK_WINDOWING_X11
-  priv = status_icon->priv;
-
-  if (priv->tray_icon)
-    gtk_widget_set_tooltip_markup (priv->tray_icon, markup);
-#endif
-#ifdef GDK_WINDOWING_WIN32
-  if (markup)
-    pango_parse_markup (markup, -1, 0, NULL, &text, NULL, NULL);
-  gtk_status_icon_set_tooltip_text (status_icon, text);
-  g_free (text);
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-  if (markup)
-    pango_parse_markup (markup, -1, 0, NULL, &text, NULL, NULL);
-  gtk_status_icon_set_tooltip_text (status_icon, text);
-  g_free (text);
-#endif
-}
-
-/**
- * gtk_status_icon_get_tooltip_markup:
- * @status_icon: a #GtkStatusIcon
- *
- * Gets the contents of the tooltip for @status_icon.
- *
- * Returns: (nullable): the tooltip text, or %NULL. You should free the
- *   returned string with g_free() when done.
- *
- * Since: 2.16
- *
- * Deprecated: 3.14: Use notifications
- */
-gchar *
-gtk_status_icon_get_tooltip_markup (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv;
-  gchar *markup = NULL;
-
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), NULL);
-
-  priv = status_icon->priv;
-
-#ifdef GDK_WINDOWING_X11
-  if (priv->tray_icon)
-    markup = gtk_widget_get_tooltip_markup (priv->tray_icon);
-#endif
-#ifdef GDK_WINDOWING_WIN32
-  if (priv->tooltip_text)
-    markup = g_markup_escape_text (priv->tooltip_text, -1);
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-  if (priv->tooltip_text)
-    markup = g_markup_escape_text (priv->tooltip_text, -1);
-#endif
-
-  return markup;
-}
-
-/**
- * gtk_status_icon_get_x11_window_id:
- * @status_icon: a #GtkStatusIcon
- *
- * This function is only useful on the X11/freedesktop.org platform.
- * It returns a window ID for the widget in the underlying
- * status icon implementation.  This is useful for the Galago 
- * notification service, which can send a window ID in the protocol 
- * in order for the server to position notification windows 
- * pointing to a status icon reliably.
- *
- * This function is not intended for other use cases which are
- * more likely to be met by one of the non-X11 specific methods, such
- * as gtk_status_icon_position_menu().
- *
- * Returns: An 32 bit unsigned integer identifier for the 
- * underlying X11 Window
- *
- * Since: 2.14
- *
- * Deprecated: 3.14: Use notifications
- */
-guint32
-gtk_status_icon_get_x11_window_id (GtkStatusIcon *status_icon)
-{
-#ifdef GDK_WINDOWING_X11
-  if (status_icon->priv->tray_icon)
-    {
-      gtk_widget_realize (GTK_WIDGET (status_icon->priv->tray_icon));
-      return GDK_WINDOW_XID (gtk_widget_get_window (GTK_WIDGET (status_icon->priv->tray_icon)));
-    }
-  else
-#endif
-  return 0;
-}
-
-/**
- * gtk_status_icon_set_title:
- * @status_icon: a #GtkStatusIcon
- * @title: the title 
- *
- * Sets the title of this tray icon.
- * This should be a short, human-readable, localized string 
- * describing the tray icon. It may be used by tools like screen
- * readers to render the tray icon.
- *
- * Since: 2.18
- *
- * Deprecated: 3.14: Use notifications
- */
-void
-gtk_status_icon_set_title (GtkStatusIcon *status_icon,
-                           const gchar   *title)
-{
-  GtkStatusIconPrivate *priv;
-
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-
-  priv = status_icon->priv;
-
-#ifdef GDK_WINDOWING_X11
-  if (priv->tray_icon)
-    gtk_window_set_title (GTK_WINDOW (priv->tray_icon), title);
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-  g_free (priv->title);
-  priv->title = g_strdup (title);
-#endif
-#ifdef GDK_WINDOWING_WIN32
-  g_free (priv->title);
-  priv->title = g_strdup (title);
-#endif
-
-  g_object_notify (G_OBJECT (status_icon), "title");
-}
-
-/**
- * gtk_status_icon_get_title:
- * @status_icon: a #GtkStatusIcon
- *
- * Gets the title of this tray icon. See gtk_status_icon_set_title().
- *
- * Returns: the title of the status icon
- *
- * Since: 2.18
- *
- * Deprecated: 3.14: Use notifications
- */
-const gchar *
-gtk_status_icon_get_title (GtkStatusIcon *status_icon)
-{
-  GtkStatusIconPrivate *priv;
-  const gchar *title = NULL;
-
-  g_return_val_if_fail (GTK_IS_STATUS_ICON (status_icon), NULL);
-
-  priv = status_icon->priv;
-
-#ifdef GDK_WINDOWING_X11
-  if (priv->tray_icon)
-    title = gtk_window_get_title (GTK_WINDOW (priv->tray_icon));
-#endif
-#ifdef GDK_WINDOWING_QUARTZ
-  title = priv->title;
-#endif
-#ifdef GDK_WINDOWING_WIN32
-  title = priv->title;
-#endif
-
- return title;
-}
-
-
-/**
- * gtk_status_icon_set_name:
- * @status_icon: a #GtkStatusIcon
- * @name: the name
- *
- * Sets the name of this tray icon.
- * This should be a string identifying this icon. It is may be
- * used for sorting the icons in the tray and will not be shown to
- * the user.
- *
- * Since: 2.20
- *
- * Deprecated: 3.14: Use notifications
- */
-void
-gtk_status_icon_set_name (GtkStatusIcon *status_icon,
-                          const gchar   *name)
-{
-#ifdef GDK_WINDOWING_X11
-  GtkStatusIconPrivate *priv;
-#endif
-
-  g_return_if_fail (GTK_IS_STATUS_ICON (status_icon));
-
-#ifdef GDK_WINDOWING_X11
-  priv = status_icon->priv;
-
-  if (priv->tray_icon)
-    {
-      if (gtk_widget_get_realized (priv->tray_icon))
-        {
-          /* gtk_window_set_wmclass() only operates on non-realized windows,
-           * so temporarily unrealize the tray here
-           */
-          gtk_widget_hide (priv->tray_icon);
-          gtk_widget_unrealize (priv->tray_icon);
-          gtk_window_set_wmclass (GTK_WINDOW (priv->tray_icon), name, name);
-          gtk_widget_show (priv->tray_icon);
-        }
-      else
-        gtk_window_set_wmclass (GTK_WINDOW (priv->tray_icon), name, name);
-    }
-#endif
-}
diff --git a/gtk/deprecated/gtkstatusicon.h b/gtk/deprecated/gtkstatusicon.h
deleted file mode 100644 (file)
index 6b1518c..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/* gtkstatusicon.h:
- *
- * Copyright (C) 2003 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *      Mark McLoughlin <mark@skynet.ie>
- */
-
-#ifndef __GTK_STATUS_ICON_H__
-#define __GTK_STATUS_ICON_H__
-
-#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
-#error "Only <gtk/gtk.h> can be included directly."
-#endif
-
-#include <gtk/gtkimage.h>
-#include <gtk/gtkmenu.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_STATUS_ICON         (gtk_status_icon_get_type ())
-#define GTK_STATUS_ICON(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_STATUS_ICON, GtkStatusIcon))
-#define GTK_STATUS_ICON_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), GTK_TYPE_STATUS_ICON, GtkStatusIconClass))
-#define GTK_IS_STATUS_ICON(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_STATUS_ICON))
-#define GTK_IS_STATUS_ICON_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GTK_TYPE_STATUS_ICON))
-#define GTK_STATUS_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_STATUS_ICON, GtkStatusIconClass))
-
-typedef struct _GtkStatusIcon       GtkStatusIcon;
-typedef struct _GtkStatusIconClass   GtkStatusIconClass;
-typedef struct _GtkStatusIconPrivate GtkStatusIconPrivate;
-
-struct _GtkStatusIcon
-{
-  GObject               parent_instance;
-
-  GtkStatusIconPrivate *priv;
-};
-
-struct _GtkStatusIconClass
-{
-  GObjectClass parent_class;
-
-  void     (* activate)             (GtkStatusIcon  *status_icon);
-  void     (* popup_menu)           (GtkStatusIcon  *status_icon,
-                                     guint           button,
-                                     guint32         activate_time);
-  gboolean (* size_changed)         (GtkStatusIcon  *status_icon,
-                                     gint            size);
-  gboolean (* button_press_event)   (GtkStatusIcon  *status_icon,
-                                     GdkEventButton *event);
-  gboolean (* button_release_event) (GtkStatusIcon  *status_icon,
-                                     GdkEventButton *event);
-  gboolean (* scroll_event)         (GtkStatusIcon  *status_icon,
-                                     GdkEventScroll *event);
-  gboolean (* query_tooltip)        (GtkStatusIcon  *status_icon,
-                                     gint            x,
-                                     gint            y,
-                                     gboolean        keyboard_mode,
-                                     GtkTooltip     *tooltip);
-
-  void (*__gtk_reserved1);
-  void (*__gtk_reserved2);
-  void (*__gtk_reserved3);
-  void (*__gtk_reserved4);
-};
-
-GDK_AVAILABLE_IN_ALL
-GType                 gtk_status_icon_get_type           (void) G_GNUC_CONST;
-
-GDK_DEPRECATED_IN_3_14
-GtkStatusIcon        *gtk_status_icon_new                (void);
-GDK_DEPRECATED_IN_3_14
-GtkStatusIcon        *gtk_status_icon_new_from_pixbuf    (GdkPixbuf          *pixbuf);
-GDK_DEPRECATED_IN_3_14
-GtkStatusIcon        *gtk_status_icon_new_from_file      (const gchar        *filename);
-GDK_DEPRECATED_IN_3_10_FOR(gtk_status_icon_new_from_icon_name)
-GtkStatusIcon        *gtk_status_icon_new_from_stock     (const gchar        *stock_id);
-GDK_DEPRECATED_IN_3_14
-GtkStatusIcon        *gtk_status_icon_new_from_icon_name (const gchar        *icon_name);
-GDK_DEPRECATED_IN_3_14
-GtkStatusIcon        *gtk_status_icon_new_from_gicon     (GIcon              *icon);
-
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_from_pixbuf    (GtkStatusIcon      *status_icon,
-                                                         GdkPixbuf          *pixbuf);
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_from_file      (GtkStatusIcon      *status_icon,
-                                                         const gchar        *filename);
-GDK_DEPRECATED_IN_3_10_FOR(gtk_status_icon_set_from_icon_name)
-void                  gtk_status_icon_set_from_stock     (GtkStatusIcon      *status_icon,
-                                                         const gchar        *stock_id);
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_from_icon_name (GtkStatusIcon      *status_icon,
-                                                         const gchar        *icon_name);
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_from_gicon     (GtkStatusIcon      *status_icon,
-                                                          GIcon              *icon);
-
-GDK_DEPRECATED_IN_3_14
-GtkImageType          gtk_status_icon_get_storage_type   (GtkStatusIcon      *status_icon);
-
-GDK_DEPRECATED_IN_3_14
-GdkPixbuf            *gtk_status_icon_get_pixbuf         (GtkStatusIcon      *status_icon);
-GDK_DEPRECATED_IN_3_10_FOR(gtk_status_icon_get_icon_name)
-const gchar *         gtk_status_icon_get_stock          (GtkStatusIcon      *status_icon);
-GDK_DEPRECATED_IN_3_14
-const gchar *         gtk_status_icon_get_icon_name      (GtkStatusIcon      *status_icon);
-GDK_DEPRECATED_IN_3_14
-GIcon                *gtk_status_icon_get_gicon          (GtkStatusIcon      *status_icon);
-
-GDK_DEPRECATED_IN_3_14
-gint                  gtk_status_icon_get_size           (GtkStatusIcon      *status_icon);
-
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_screen         (GtkStatusIcon      *status_icon,
-                                                          GdkScreen          *screen);
-GDK_DEPRECATED_IN_3_14
-GdkScreen            *gtk_status_icon_get_screen         (GtkStatusIcon      *status_icon);
-
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_has_tooltip    (GtkStatusIcon      *status_icon,
-                                                          gboolean            has_tooltip);
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_tooltip_text   (GtkStatusIcon      *status_icon,
-                                                          const gchar        *text);
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_tooltip_markup (GtkStatusIcon      *status_icon,
-                                                          const gchar        *markup);
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_title          (GtkStatusIcon      *status_icon,
-                                                          const gchar        *title);
-GDK_DEPRECATED_IN_3_14
-const gchar *         gtk_status_icon_get_title          (GtkStatusIcon      *status_icon);
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_name           (GtkStatusIcon      *status_icon,
-                                                          const gchar        *name);
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_set_visible        (GtkStatusIcon      *status_icon,
-                                                         gboolean            visible);
-GDK_DEPRECATED_IN_3_14
-gboolean              gtk_status_icon_get_visible        (GtkStatusIcon      *status_icon);
-
-GDK_DEPRECATED_IN_3_14
-gboolean              gtk_status_icon_is_embedded        (GtkStatusIcon      *status_icon);
-
-GDK_DEPRECATED_IN_3_14
-void                  gtk_status_icon_position_menu      (GtkMenu            *menu,
-                                                         gint               *x,
-                                                         gint               *y,
-                                                         gboolean           *push_in,
-                                                         gpointer            user_data);
-GDK_DEPRECATED_IN_3_14
-gboolean              gtk_status_icon_get_geometry       (GtkStatusIcon      *status_icon,
-                                                         GdkScreen         **screen,
-                                                         GdkRectangle       *area,
-                                                         GtkOrientation     *orientation);
-GDK_DEPRECATED_IN_3_14
-gboolean              gtk_status_icon_get_has_tooltip    (GtkStatusIcon      *status_icon);
-GDK_DEPRECATED_IN_3_14
-gchar                *gtk_status_icon_get_tooltip_text   (GtkStatusIcon      *status_icon);
-GDK_DEPRECATED_IN_3_14
-gchar                *gtk_status_icon_get_tooltip_markup (GtkStatusIcon      *status_icon);
-
-GDK_DEPRECATED_IN_3_14
-guint32               gtk_status_icon_get_x11_window_id  (GtkStatusIcon      *status_icon);
-
-G_END_DECLS
-
-#endif /* __GTK_STATUS_ICON_H__ */
diff --git a/gtk/deprecated/gtktrayicon-x11.c b/gtk/deprecated/gtktrayicon-x11.c
deleted file mode 100644 (file)
index 556b9da..0000000
+++ /dev/null
@@ -1,1100 +0,0 @@
-/* gtktrayicon.c
- * Copyright (C) 2002 Anders Carlsson <andersca@gnu.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * This is an implementation of the freedesktop.org “system tray” spec,
- * http://www.freedesktop.org/wiki/Standards/systemtray-spec
- */
-
-#include "config.h"
-
-#include <math.h>
-#include <string.h>
-
-#include "x11/gdkx.h"
-#include <X11/Xatom.h>
-#include <cairo-xlib.h>
-
-#include "gtkintl.h"
-#include "gtkprivate.h"
-#include "gtktrayicon.h"
-#include "gtktestutils.h"
-#include "gtkdebug.h"
-#include "gtktypebuiltins.h"
-#include "gtkrender.h"
-
-#define SYSTEM_TRAY_REQUEST_DOCK    0
-#define SYSTEM_TRAY_BEGIN_MESSAGE   1
-#define SYSTEM_TRAY_CANCEL_MESSAGE  2
-
-#define SYSTEM_TRAY_ORIENTATION_HORZ 0
-#define SYSTEM_TRAY_ORIENTATION_VERT 1
-
-enum {
-  PROP_0,
-  PROP_ORIENTATION,
-  PROP_FG_COLOR,
-  PROP_ERROR_COLOR,
-  PROP_WARNING_COLOR,
-  PROP_SUCCESS_COLOR,
-  PROP_PADDING,
-  PROP_ICON_SIZE
-};
-
-struct _GtkTrayIconPrivate
-{
-  guint stamp;
-  
-  Atom selection_atom;
-  Atom manager_atom;
-  Atom system_tray_opcode_atom;
-  Atom orientation_atom;
-  Atom visual_atom;
-  Atom colors_atom;
-  Atom padding_atom;
-  Atom icon_size_atom;
-  Window manager_window;
-  GdkVisual *manager_visual;
-  gboolean manager_visual_rgba;
-
-  GtkOrientation orientation;
-  GdkRGBA fg_color;
-  GdkRGBA error_color;
-  GdkRGBA warning_color;
-  GdkRGBA success_color;
-  gint padding;
-  gint icon_size;
-};
-
-static void gtk_tray_icon_constructed   (GObject     *object);
-static void gtk_tray_icon_dispose       (GObject     *object);
-
-static void gtk_tray_icon_get_property  (GObject     *object,
-                                        guint        prop_id,
-                                        GValue      *value,
-                                        GParamSpec  *pspec);
-
-static void     gtk_tray_icon_realize   (GtkWidget   *widget);
-static void     gtk_tray_icon_style_updated (GtkWidget   *widget);
-static gboolean gtk_tray_icon_delete    (GtkWidget   *widget,
-                                        GdkEventAny *event);
-static gboolean gtk_tray_icon_draw      (GtkWidget   *widget,
-                                         cairo_t     *cr);
-
-static void gtk_tray_icon_clear_manager_window     (GtkTrayIcon *icon);
-static void gtk_tray_icon_update_manager_window    (GtkTrayIcon *icon);
-static void gtk_tray_icon_manager_window_destroyed (GtkTrayIcon *icon);
-
-static GdkFilterReturn gtk_tray_icon_manager_filter (GdkXEvent *xevent,
-                                                    GdkEvent  *event,
-                                                    gpointer   user_data);
-
-
-G_DEFINE_TYPE_WITH_PRIVATE (GtkTrayIcon, gtk_tray_icon, GTK_TYPE_PLUG)
-
-static void
-gtk_tray_icon_class_init (GtkTrayIconClass *class)
-{
-  GObjectClass *gobject_class = (GObjectClass *)class;
-  GtkWidgetClass *widget_class = (GtkWidgetClass *)class;
-
-  gobject_class->get_property = gtk_tray_icon_get_property;
-  gobject_class->constructed = gtk_tray_icon_constructed;
-  gobject_class->dispose = gtk_tray_icon_dispose;
-
-  widget_class->realize = gtk_tray_icon_realize;
-  widget_class->style_updated = gtk_tray_icon_style_updated;
-  widget_class->delete_event = gtk_tray_icon_delete;
-  widget_class->draw = gtk_tray_icon_draw;
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_ORIENTATION,
-                                  g_param_spec_enum ("orientation",
-                                                     P_("Orientation"),
-                                                     P_("The orientation of the tray"),
-                                                     GTK_TYPE_ORIENTATION,
-                                                     GTK_ORIENTATION_HORIZONTAL,
-                                                     GTK_PARAM_READABLE));
-
-  g_object_class_install_property (gobject_class,
-                                   PROP_FG_COLOR,
-                                   g_param_spec_boxed ("fg-color",
-                                                       P_("Foreground color"),
-                                                       P_("Foreground color for symbolic icons"),
-                                                       GDK_TYPE_RGBA,
-                                                       GTK_PARAM_READABLE));
-
-  g_object_class_install_property (gobject_class,
-                                   PROP_ERROR_COLOR,
-                                   g_param_spec_boxed ("error-color",
-                                                       P_("Error color"),
-                                                       P_("Error color for symbolic icons"),
-                                                       GDK_TYPE_RGBA,
-                                                       GTK_PARAM_READABLE));
-
-  g_object_class_install_property (gobject_class,
-                                   PROP_WARNING_COLOR,
-                                   g_param_spec_boxed ("warning-color",
-                                                       P_("Warning color"),
-                                                       P_("Warning color for symbolic icons"),
-                                                       GDK_TYPE_RGBA,
-                                                       GTK_PARAM_READABLE));
-
-  g_object_class_install_property (gobject_class,
-                                   PROP_SUCCESS_COLOR,
-                                   g_param_spec_boxed ("success-color",
-                                                       P_("Success color"),
-                                                       P_("Success color for symbolic icons"),
-                                                       GDK_TYPE_RGBA,
-                                                       GTK_PARAM_READABLE));
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_PADDING,
-                                  g_param_spec_int ("padding",
-                                                    P_("Padding"),
-                                                    P_("Padding that should be put around icons in the tray"),
-                                                    0,
-                                                     G_MAXINT,
-                                                     0,
-                                                    GTK_PARAM_READABLE));
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_ICON_SIZE,
-                                  g_param_spec_int ("icon-size",
-                                                    P_("Icon Size"),
-                                                    P_("The pixel size that icons should be forced to, or zero"),
-                                                    0,
-                                                     G_MAXINT,
-                                                     0,
-                                                    GTK_PARAM_READABLE));
-}
-
-static void
-gtk_tray_icon_init (GtkTrayIcon *icon)
-{
-  icon->priv = gtk_tray_icon_get_instance_private (icon);
-  icon->priv->stamp = 1;
-  icon->priv->orientation = GTK_ORIENTATION_HORIZONTAL;
-  icon->priv->fg_color.red        = 0.0;
-  icon->priv->fg_color.green      = 0.0;
-  icon->priv->fg_color.blue       = 0.0;
-  icon->priv->fg_color.alpha      = 1.0;
-  icon->priv->error_color.red     = 0.7968;
-  icon->priv->error_color.green   = 0.0;
-  icon->priv->error_color.blue    = 0.0;
-  icon->priv->error_color.alpha   = 1.0;
-  icon->priv->warning_color.red   = 0.9570;
-  icon->priv->warning_color.green = 0.4726;
-  icon->priv->warning_color.blue  = 0.2421;
-  icon->priv->warning_color.alpha = 1.0;
-  icon->priv->success_color.red   = 0.3047;
-  icon->priv->success_color.green = 0.6016;
-  icon->priv->success_color.blue  = 0.0234;
-  icon->priv->success_color.alpha = 1.0;
-  icon->priv->padding = 0;
-  icon->priv->icon_size = 0;
-
-  gtk_widget_set_app_paintable (GTK_WIDGET (icon), TRUE);
-  gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK);
-}
-
-static void
-gtk_tray_icon_constructed (GObject *object)
-{
-  /* Do setup that depends on the screen; screen has been set at this point */
-
-  GtkTrayIcon *icon = GTK_TRAY_ICON (object);
-  GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (object));
-  GdkWindow *root_window = gdk_screen_get_root_window (screen);
-  GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (object));
-  Display *xdisplay = gdk_x11_display_get_xdisplay (display);
-  char buffer[256];
-  
-  g_snprintf (buffer, sizeof (buffer),
-             "_NET_SYSTEM_TRAY_S%d",
-             gdk_screen_get_number (screen));
-
-  icon->priv->selection_atom = XInternAtom (xdisplay, buffer, False);
-  
-  icon->priv->manager_atom = XInternAtom (xdisplay, "MANAGER", False);
-  
-  icon->priv->system_tray_opcode_atom = XInternAtom (xdisplay,
-                                                    "_NET_SYSTEM_TRAY_OPCODE",
-                                                    False);
-
-  icon->priv->orientation_atom = XInternAtom (xdisplay,
-                                             "_NET_SYSTEM_TRAY_ORIENTATION",
-                                             False);
-
-  icon->priv->visual_atom = XInternAtom (xdisplay,
-                                        "_NET_SYSTEM_TRAY_VISUAL",
-                                        False);
-
-  icon->priv->colors_atom = XInternAtom (xdisplay,
-                                         "_NET_SYSTEM_TRAY_COLORS",
-                                         False);
-
-  icon->priv->padding_atom = XInternAtom (xdisplay,
-                                        "_NET_SYSTEM_TRAY_PADDING",
-                                        False);
-
-  icon->priv->icon_size_atom = XInternAtom (xdisplay,
-                                            "_NET_SYSTEM_TRAY_ICON_SIZE",
-                                            False);
-
-  /* Add a root window filter so that we get changes on MANAGER */
-  gdk_window_add_filter (root_window,
-                        gtk_tray_icon_manager_filter, icon);
-
-  gtk_tray_icon_update_manager_window (icon);
-}
-
-static void
-gtk_tray_icon_clear_manager_window (GtkTrayIcon *icon)
-{
-  GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (icon));
-
-  if (icon->priv->manager_window != None)
-    {
-      GdkWindow *gdkwin;
-
-      gdkwin = gdk_x11_window_lookup_for_display (display,
-                                                  icon->priv->manager_window);
-
-      gdk_window_remove_filter (gdkwin, gtk_tray_icon_manager_filter, icon);
-
-      icon->priv->manager_window = None;
-      icon->priv->manager_visual = NULL;
-    }
-}
-
-static void
-gtk_tray_icon_dispose (GObject *object)
-{
-  GtkTrayIcon *icon = GTK_TRAY_ICON (object);
-  GtkWidget *widget = GTK_WIDGET (object);
-  GdkWindow *root_window = gdk_screen_get_root_window (gtk_widget_get_screen (widget));
-
-  gtk_tray_icon_clear_manager_window (icon);
-
-  gdk_window_remove_filter (root_window, gtk_tray_icon_manager_filter, icon);
-
-  G_OBJECT_CLASS (gtk_tray_icon_parent_class)->dispose (object);
-}
-
-static void
-gtk_tray_icon_get_property (GObject    *object,
-                           guint       prop_id,
-                           GValue     *value,
-                           GParamSpec *pspec)
-{
-  GtkTrayIcon *icon = GTK_TRAY_ICON (object);
-
-  switch (prop_id)
-    {
-    case PROP_ORIENTATION:
-      g_value_set_enum (value, icon->priv->orientation);
-      break;
-    case PROP_FG_COLOR:
-      g_value_set_boxed (value, &icon->priv->fg_color);
-      break;
-    case PROP_ERROR_COLOR:
-      g_value_set_boxed (value, &icon->priv->error_color);
-      break;
-    case PROP_WARNING_COLOR:
-      g_value_set_boxed (value, &icon->priv->warning_color);
-      break;
-    case PROP_SUCCESS_COLOR:
-      g_value_set_boxed (value, &icon->priv->success_color);
-      break;
-    case PROP_PADDING:
-      g_value_set_int (value, icon->priv->padding);
-      break;
-    case PROP_ICON_SIZE:
-      g_value_set_int (value, icon->priv->icon_size);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static gboolean
-gtk_tray_icon_draw (GtkWidget *widget, 
-                   cairo_t   *cr)
-{
-  GtkTrayIcon *icon = GTK_TRAY_ICON (widget);
-  GtkWidget *focus_child;
-  GdkWindow *window;
-  gint border_width;
-  gboolean retval = FALSE;
-  cairo_surface_t *target;
-
-  window = gtk_widget_get_window (widget);
-  target = cairo_get_group_target (cr);
-
-  if (icon->priv->manager_visual_rgba ||
-      cairo_surface_get_type (target) != CAIRO_SURFACE_TYPE_XLIB ||
-      cairo_xlib_surface_get_drawable (target) != GDK_WINDOW_XID (window))
-    {
-      /* Clear to transparent */
-      cairo_set_source_rgba (cr, 0, 0, 0, 0);
-      cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-      cairo_paint (cr);
-    }
-  else
-    {
-      GdkRectangle clip;
-
-      if (gdk_cairo_get_clip_rectangle (cr, &clip))
-        {
-          /* Clear to parent-relative pixmap
-           * We need to use direct X access here because GDK doesn't know about
-           * the parent realtive pixmap. */
-          cairo_surface_flush (target);
-
-          XClearArea (GDK_WINDOW_XDISPLAY (window),
-                      GDK_WINDOW_XID (window),
-                      clip.x, clip.y,
-                      clip.width, clip.height,
-                      False);
-          cairo_surface_mark_dirty_rectangle (target, 
-                                              clip.x, clip.y,
-                                              clip.width, clip.height);
-        }
-    }
-
-  if (GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->draw)
-    retval = GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->draw (widget, cr);
-
-  focus_child = gtk_container_get_focus_child (GTK_CONTAINER (widget));
-  if (focus_child && gtk_widget_has_visible_focus (focus_child))
-    {
-      GtkStyleContext *context;
-
-      border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
-      context = gtk_widget_get_style_context (widget);
-
-      gtk_render_focus (context, cr, border_width, border_width,
-                        gtk_widget_get_allocated_width (widget) - 2 * border_width,
-                        gtk_widget_get_allocated_height (widget) - 2 * border_width);
-    }
-
-  return retval;
-}
-
-static void
-gtk_tray_icon_get_orientation_property (GtkTrayIcon *icon)
-{
-  GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (icon));
-  GdkDisplay *display = gdk_screen_get_display (screen);
-  Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
-
-  Atom type;
-  int format;
-  union {
-       gulong *prop;
-       guchar *prop_ch;
-  } prop = { NULL };
-  gulong nitems;
-  gulong bytes_after;
-  int error, result;
-
-  g_assert (icon->priv->manager_window != None);
-  
-  gdk_error_trap_push ();
-  type = None;
-  result = XGetWindowProperty (xdisplay,
-                              icon->priv->manager_window,
-                              icon->priv->orientation_atom,
-                              0, G_MAXLONG, FALSE,
-                              XA_CARDINAL,
-                              &type, &format, &nitems,
-                              &bytes_after, &(prop.prop_ch));
-  error = gdk_error_trap_pop ();
-
-  if (error || result != Success)
-    return;
-
-  if (type == XA_CARDINAL && nitems == 1 && format == 32)
-    {
-      GtkOrientation orientation;
-
-      orientation = (prop.prop [0] == SYSTEM_TRAY_ORIENTATION_HORZ) ?
-                                       GTK_ORIENTATION_HORIZONTAL :
-                                       GTK_ORIENTATION_VERTICAL;
-
-      if (icon->priv->orientation != orientation)
-       {
-         icon->priv->orientation = orientation;
-
-         g_object_notify (G_OBJECT (icon), "orientation");
-       }
-    }
-
-  if (type != None)
-    XFree (prop.prop);
-}
-
-static void
-gtk_tray_icon_get_visual_property (GtkTrayIcon *icon)
-{
-  GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (icon));
-  GdkDisplay *display = gdk_screen_get_display (screen);
-  Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
-
-  Atom type;
-  int format;
-  union {
-       gulong *prop;
-       guchar *prop_ch;
-  } prop = { NULL };
-  gulong nitems;
-  gulong bytes_after;
-  int error, result;
-
-  g_assert (icon->priv->manager_window != None);
-
-  gdk_error_trap_push ();
-  type = None;
-  result = XGetWindowProperty (xdisplay,
-                              icon->priv->manager_window,
-                              icon->priv->visual_atom,
-                              0, G_MAXLONG, FALSE,
-                              XA_VISUALID,
-                              &type, &format, &nitems,
-                              &bytes_after, &(prop.prop_ch));
-  error = gdk_error_trap_pop ();
-
-  if (!error && result == Success &&
-      type == XA_VISUALID && nitems == 1 && format == 32)
-    {
-      VisualID visual_id;
-      GdkVisual *visual;
-      gint red_prec, green_prec, blue_prec;
-
-      visual_id = prop.prop[0];
-      visual = gdk_x11_screen_lookup_visual (screen, visual_id);
-      gdk_visual_get_red_pixel_details (visual, NULL, NULL, &red_prec);
-      gdk_visual_get_green_pixel_details (visual, NULL, NULL, &green_prec);
-      gdk_visual_get_blue_pixel_details (visual, NULL, NULL, &blue_prec);
-      icon->priv->manager_visual = visual;
-      icon->priv->manager_visual_rgba =
-          (red_prec + blue_prec + green_prec < gdk_visual_get_depth (visual));
-    }
-  else
-    {
-      icon->priv->manager_visual = NULL;
-      icon->priv->manager_visual_rgba = FALSE;
-    }
-
-
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-  /* For the background-relative hack we use when we aren't
-   * using a real RGBA visual, we can't be double-buffered
-   */
-  gtk_widget_set_double_buffered (GTK_WIDGET (icon), icon->priv->manager_visual_rgba);
-G_GNUC_END_IGNORE_DEPRECATIONS
-
-  if (type != None)
-    XFree (prop.prop);
-}
-
-static void
-gtk_tray_icon_get_colors_property (GtkTrayIcon *icon)
-{
-  GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (icon));
-  GdkDisplay *display = gdk_screen_get_display (screen);
-  Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
-
-  Atom type;
-  int format;
-  union {
-        gulong *prop;
-        guchar *prop_ch;
-  } prop = { NULL };
-  gulong nitems;
-  gulong bytes_after;
-  int error, result;
-
-  g_assert (icon->priv->manager_window != None);
-
-  gdk_error_trap_push ();
-  type = None;
-  result = XGetWindowProperty (xdisplay,
-                              icon->priv->manager_window,
-                              icon->priv->colors_atom,
-                              0, G_MAXLONG, FALSE,
-                              XA_CARDINAL,
-                              &type, &format, &nitems,
-                              &bytes_after, &(prop.prop_ch));
-  error = gdk_error_trap_pop ();
-
-  if (error || result != Success)
-    return;
-
-  if (type == XA_CARDINAL && nitems == 12 && format == 32)
-    {
-      GdkRGBA color;
-
-      color.alpha = 1.0;
-      g_object_freeze_notify (G_OBJECT (icon));
-
-      color.red = prop.prop[0] / 65535.0;
-      color.green = prop.prop[1] / 65535.0;
-      color.blue = prop.prop[2] / 65535.0;
-
-      if (!gdk_rgba_equal (&icon->priv->fg_color, &color))
-        {
-          icon->priv->fg_color = color;
-
-          g_object_notify (G_OBJECT (icon), "fg-color");
-        }
-
-      color.red = prop.prop[3] / 65535.0;
-      color.green = prop.prop[4] / 65535.0;
-      color.blue = prop.prop[5] / 65535.0;
-
-      if (!gdk_rgba_equal (&icon->priv->error_color, &color))
-        {
-          icon->priv->error_color = color;
-
-          g_object_notify (G_OBJECT (icon), "error-color");
-        }
-
-      color.red = prop.prop[6] / 65535.0;
-      color.green = prop.prop[7] / 65535.0;
-      color.blue = prop.prop[8] / 65535.0;
-
-      if (!gdk_rgba_equal (&icon->priv->warning_color, &color))
-        {
-          icon->priv->warning_color = color;
-
-          g_object_notify (G_OBJECT (icon), "warning-color");
-        }
-
-      color.red = prop.prop[9] / 65535.0;
-      color.green = prop.prop[10] /  65535.0;
-      color.blue = prop.prop[11] / 65535.0;
-
-      if (!gdk_rgba_equal (&icon->priv->success_color, &color))
-        {
-          icon->priv->success_color = color;
-
-          g_object_notify (G_OBJECT (icon), "success-color");
-        }
-
-      g_object_thaw_notify (G_OBJECT (icon));
-    }
-
-  if (type != None)
-    XFree (prop.prop);
-}
-
-static void
-gtk_tray_icon_get_padding_property (GtkTrayIcon *icon)
-{
-  GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (icon));
-  GdkDisplay *display = gdk_screen_get_display (screen);
-  Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
-
-  Atom type;
-  int format;
-  union {
-       gulong *prop;
-       guchar *prop_ch;
-  } prop = { NULL };
-  gulong nitems;
-  gulong bytes_after;
-  int error, result;
-
-  g_assert (icon->priv->manager_window != None);
-
-  gdk_error_trap_push ();
-  type = None;
-  result = XGetWindowProperty (xdisplay,
-                              icon->priv->manager_window,
-                              icon->priv->padding_atom,
-                              0, G_MAXLONG, FALSE,
-                              XA_CARDINAL,
-                              &type, &format, &nitems,
-                              &bytes_after, &(prop.prop_ch));
-  error = gdk_error_trap_pop ();
-
-  if (!error && result == Success &&
-      type == XA_CARDINAL && nitems == 1 && format == 32)
-    {
-      gint padding;
-
-      padding = prop.prop[0];
-
-      if (icon->priv->padding != padding)
-       {
-         icon->priv->padding = padding;
-
-         g_object_notify (G_OBJECT (icon), "padding");
-       }
-    }
-
-  if (type != None)
-    XFree (prop.prop);
-}
-
-static void
-gtk_tray_icon_get_icon_size_property (GtkTrayIcon *icon)
-{
-  GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (icon));
-  GdkDisplay *display = gdk_screen_get_display (screen);
-  Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
-
-  Atom type;
-  int format;
-  union {
-       gulong *prop;
-       guchar *prop_ch;
-  } prop = { NULL };
-  gulong nitems;
-  gulong bytes_after;
-  int error, result;
-
-  g_assert (icon->priv->manager_window != None);
-
-  gdk_error_trap_push ();
-  type = None;
-  result = XGetWindowProperty (xdisplay,
-                              icon->priv->manager_window,
-                              icon->priv->icon_size_atom,
-                              0, G_MAXLONG, FALSE,
-                              XA_CARDINAL,
-                              &type, &format, &nitems,
-                              &bytes_after, &(prop.prop_ch));
-  error = gdk_error_trap_pop ();
-
-  if (!error && result == Success &&
-      type == XA_CARDINAL && nitems == 1 && format == 32)
-    {
-      gint icon_size;
-
-      icon_size = prop.prop[0];
-
-      if (icon->priv->icon_size != icon_size)
-       {
-         icon->priv->icon_size = icon_size;
-
-         g_object_notify (G_OBJECT (icon), "icon-size");
-       }
-    }
-
-  if (type != None)
-    XFree (prop.prop);
-}
-
-static GdkFilterReturn
-gtk_tray_icon_manager_filter (GdkXEvent *xevent,
-                             GdkEvent  *event,
-                             gpointer   user_data)
-{
-  GtkTrayIcon *icon = user_data;
-  XEvent *xev = (XEvent *)xevent;
-
-  if (xev->xany.type == ClientMessage &&
-      xev->xclient.message_type == icon->priv->manager_atom &&
-      xev->xclient.data.l[1] == icon->priv->selection_atom)
-    {
-      GTK_NOTE (PLUGSOCKET,
-                g_message ("GtkStatusIcon %p: tray manager appeared", icon));
-
-      gtk_tray_icon_update_manager_window (icon);
-    }
-  else if (xev->xany.window == icon->priv->manager_window)
-    {
-      if (xev->xany.type == PropertyNotify &&
-         xev->xproperty.atom == icon->priv->orientation_atom)
-       {
-          GTK_NOTE (PLUGSOCKET,
-                    g_message ("GtkStatusIcon %p: got PropertyNotify on manager window for orientation atom", icon));
-
-         gtk_tray_icon_get_orientation_property (icon);
-       }
-      else if (xev->xany.type == PropertyNotify &&
-               xev->xproperty.atom == icon->priv->colors_atom)
-        {
-          GTK_NOTE (PLUGSOCKET,
-                    g_message ("GtkStatusIcon %p: got PropertyNotify on manager window for colors atom", icon));
-
-          gtk_tray_icon_get_colors_property (icon);
-        }
-      else if (xev->xany.type == PropertyNotify &&
-               xev->xproperty.atom == icon->priv->padding_atom)
-        {
-          gtk_tray_icon_get_padding_property (icon);
-        }
-      else if (xev->xany.type == PropertyNotify &&
-               xev->xproperty.atom == icon->priv->icon_size_atom)
-        {
-          gtk_tray_icon_get_icon_size_property (icon);
-        }
-      else if (xev->xany.type == DestroyNotify)
-       {
-          GTK_NOTE (PLUGSOCKET,
-                    g_message ("GtkStatusIcon %p: got DestroyNotify for manager window", icon));
-
-         gtk_tray_icon_manager_window_destroyed (icon);
-       }
-      else
-        {
-          GTK_NOTE (PLUGSOCKET,
-                    g_message ("GtkStatusIcon %p: got other message on manager window", icon));
-        }
-    }
-  
-  return GDK_FILTER_CONTINUE;
-}
-
-static void
-gtk_tray_icon_send_manager_message (GtkTrayIcon *icon,
-                                   long         message,
-                                   Window       window,
-                                   long         data1,
-                                   long         data2,
-                                   long         data3)
-{
-  GtkWidget *widget;
-  XClientMessageEvent ev;
-  Display *display;
-
-  widget = GTK_WIDGET (icon);
-
-  memset (&ev, 0, sizeof (ev));
-  ev.type = ClientMessage;
-  ev.window = window;
-  ev.message_type = icon->priv->system_tray_opcode_atom;
-  ev.format = 32;
-  ev.data.l[0] = gdk_x11_get_server_time (gtk_widget_get_window (widget));
-  ev.data.l[1] = message;
-  ev.data.l[2] = data1;
-  ev.data.l[3] = data2;
-  ev.data.l[4] = data3;
-
-  display = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (widget));
-
-  gdk_error_trap_push ();
-  XSendEvent (display,
-             icon->priv->manager_window, False, NoEventMask, (XEvent *)&ev);
-  gdk_error_trap_pop_ignored ();
-}
-
-static void
-gtk_tray_icon_send_dock_request (GtkTrayIcon *icon)
-{
-  GTK_NOTE (PLUGSOCKET,
-            g_message ("GtkStatusIcon %p: sending dock request to manager window %lx",
-                       icon, (gulong) icon->priv->manager_window));
-
-  gtk_tray_icon_send_manager_message (icon,
-                                     SYSTEM_TRAY_REQUEST_DOCK,
-                                     icon->priv->manager_window,
-                                     gtk_plug_get_id (GTK_PLUG (icon)),
-                                     0, 0);
-}
-
-static void
-gtk_tray_icon_update_manager_window (GtkTrayIcon *icon)
-{
-  GtkWidget *widget = GTK_WIDGET (icon);
-  GdkScreen *screen = gtk_widget_get_screen (widget);
-  GdkDisplay *display = gdk_screen_get_display (screen);
-  Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
-
-  GTK_NOTE (PLUGSOCKET,
-            g_message ("GtkStatusIcon %p: updating tray icon manager window, current manager window: %lx",
-                       icon, (gulong) icon->priv->manager_window));
-
-  if (icon->priv->manager_window != None)
-    return;
-
-  GTK_NOTE (PLUGSOCKET,
-            g_message ("GtkStatusIcon %p: trying to find manager window", icon));
-
-  XGrabServer (xdisplay);
-  
-  icon->priv->manager_window = XGetSelectionOwner (xdisplay,
-                                                  icon->priv->selection_atom);
-
-  if (icon->priv->manager_window != None)
-    XSelectInput (xdisplay,
-                 icon->priv->manager_window, StructureNotifyMask|PropertyChangeMask);
-
-  XUngrabServer (xdisplay);
-  XFlush (xdisplay);
-  
-  if (icon->priv->manager_window != None)
-    {
-      GdkWindow *gdkwin;
-
-      GTK_NOTE (PLUGSOCKET,
-                g_message ("GtkStatusIcon %p: is being managed by window %lx",
-                           icon, (gulong) icon->priv->manager_window));
-
-      gdkwin = gdk_x11_window_lookup_for_display (display,
-                                                  icon->priv->manager_window);
-
-      gdk_window_add_filter (gdkwin, gtk_tray_icon_manager_filter, icon);
-
-      gtk_tray_icon_get_orientation_property (icon);
-      gtk_tray_icon_get_visual_property (icon);
-      gtk_tray_icon_get_colors_property (icon);
-      gtk_tray_icon_get_padding_property (icon);
-      gtk_tray_icon_get_icon_size_property (icon);
-
-      if (gtk_widget_get_realized (GTK_WIDGET (icon)))
-       {
-         if ((icon->priv->manager_visual == NULL &&
-              gtk_widget_get_visual (widget) == gdk_screen_get_system_visual (screen)) ||
-             (icon->priv->manager_visual == gtk_widget_get_visual (widget)))
-           {
-             /* Already have the right visual, can just dock
-              */
-             gtk_tray_icon_send_dock_request (icon);
-           }
-         else
-           {
-             /* Need to re-realize the widget to get the right visual
-              */
-             gtk_widget_hide (widget);
-             gtk_widget_unrealize (widget);
-             gtk_widget_show (widget);
-           }
-       }
-    }
-  else
-    {
-      GTK_NOTE (PLUGSOCKET,
-                g_message ("GtkStatusIcon %p: no tray manager found", icon));
-    }
-}
-
-static void
-gtk_tray_icon_manager_window_destroyed (GtkTrayIcon *icon)
-{
-  g_return_if_fail (icon->priv->manager_window != None);
-
-  GTK_NOTE (PLUGSOCKET,
-            g_message ("GtkStatusIcon %p: tray manager window destroyed", icon));
-
-  gtk_tray_icon_clear_manager_window (icon);
-}
-
-static gboolean
-gtk_tray_icon_delete (GtkWidget   *widget,
-                     GdkEventAny *event)
-{
-  GTK_NOTE (PLUGSOCKET,
-            g_message ("GtkStatusIcon %p: delete notify, tray manager window %lx",
-                       widget, (gulong) GTK_TRAY_ICON (widget)->priv->manager_window));
-
-  /* A bug in X server versions up to x.org 1.5.0 means that:
-   * XFixesChangeSaveSet(...., SaveSetRoot, SaveSetUnmap) doesn't work properly
-   * and we'll left mapped in a separate toplevel window if the tray is destroyed.
-   * For simplicity just get rid of our X window and start over.
-   */
-  gtk_widget_hide (widget);
-  gtk_widget_unrealize (widget);
-  gtk_widget_show (widget);
-
-  /* Handled it, don't destroy the tray icon */
-  return TRUE;
-}
-
-static void
-gtk_tray_icon_set_visual (GtkTrayIcon *icon)
-{
-  GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (icon));
-  GdkVisual *visual = icon->priv->manager_visual;
-
-  /* To avoid uncertainty about colormaps, _NET_SYSTEM_TRAY_VISUAL is supposed
-   * to be either the screen default visual or a TrueColor visual; ignore it
-   * if it is something else
-   */
-  if (visual && gdk_visual_get_visual_type (visual) != GDK_VISUAL_TRUE_COLOR)
-    visual = NULL;
-
-  if (visual == NULL)
-    visual = gdk_screen_get_system_visual (screen);
-
-  gtk_widget_set_visual (GTK_WIDGET (icon), visual);
-}
-
-static void
-gtk_tray_icon_realize (GtkWidget *widget)
-{
-  GtkTrayIcon *icon = GTK_TRAY_ICON (widget);
-  GdkWindow *window;
-
-  /* Set our visual before realizing */
-  gtk_tray_icon_set_visual (icon);
-
-  GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->realize (widget);
-  window = gtk_widget_get_window (widget);
-  if (icon->priv->manager_visual_rgba)
-    {
-      /* Set a transparent background */
-      GdkRGBA transparent = { 0.0, 0.0, 0.0, 0.0 };
-      gdk_window_set_background_rgba (window, &transparent);
-    }
-  else
-    {
-      /* Set a parent-relative background pixmap */
-      gdk_window_set_background_pattern (window, NULL);
-    }
-
-  GTK_NOTE (PLUGSOCKET,
-            g_message ("GtkStatusIcon %p: realized, window: %lx, socket window: %lx",
-                       widget,
-                       (gulong) GDK_WINDOW_XID (window),
-                       gtk_plug_get_socket_window (GTK_PLUG (icon))
-                       ? (gulong) GDK_WINDOW_XID (gtk_plug_get_socket_window (GTK_PLUG (icon)))
-                       : 0UL));
-
-  if (icon->priv->manager_window != None)
-    gtk_tray_icon_send_dock_request (icon);
-}
-
-static void
-gtk_tray_icon_style_updated (GtkWidget   *widget)
-{
-  /* The default handler resets the background according to the style. We either
-   * use a transparent background or a parent-relative background and ignore the
-   * style background. So, just don't chain up.
-   */
-}
-
-guint
-_gtk_tray_icon_send_message (GtkTrayIcon *icon,
-                            gint         timeout,
-                            const gchar *message,
-                            gint         len)
-{
-  guint stamp;
-  Display *xdisplay;
-  g_return_val_if_fail (GTK_IS_TRAY_ICON (icon), 0);
-  g_return_val_if_fail (timeout >= 0, 0);
-  g_return_val_if_fail (message != NULL, 0);
-
-  if (icon->priv->manager_window == None)
-    return 0;
-
-  if (len < 0)
-    len = strlen (message);
-
-  stamp = icon->priv->stamp++;
-  
-  /* Get ready to send the message */
-  gtk_tray_icon_send_manager_message (icon, SYSTEM_TRAY_BEGIN_MESSAGE,
-                                     (Window)gtk_plug_get_id (GTK_PLUG (icon)),
-                                     timeout, len, stamp);
-
-  /* Now to send the actual message */
-  xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
-  gdk_error_trap_push ();
-  while (len > 0)
-    {
-      XClientMessageEvent ev;
-
-      memset (&ev, 0, sizeof (ev));
-      ev.type = ClientMessage;
-      ev.window = (Window)gtk_plug_get_id (GTK_PLUG (icon));
-      ev.format = 8;
-      ev.message_type = XInternAtom (xdisplay,
-                                    "_NET_SYSTEM_TRAY_MESSAGE_DATA", False);
-      if (len > 20)
-       {
-         memcpy (&ev.data, message, 20);
-         len -= 20;
-         message += 20;
-       }
-      else
-       {
-         memcpy (&ev.data, message, len);
-         len = 0;
-       }
-
-      XSendEvent (xdisplay,
-                 icon->priv->manager_window, False,
-                 StructureNotifyMask, (XEvent *)&ev);
-    }
-  gdk_error_trap_pop_ignored ();
-
-  return stamp;
-}
-
-void
-_gtk_tray_icon_cancel_message (GtkTrayIcon *icon,
-                              guint        id)
-{
-  g_return_if_fail (GTK_IS_TRAY_ICON (icon));
-  g_return_if_fail (id > 0);
-  
-  gtk_tray_icon_send_manager_message (icon, SYSTEM_TRAY_CANCEL_MESSAGE,
-                                     (Window)gtk_plug_get_id (GTK_PLUG (icon)),
-                                     id, 0, 0);
-}
-
-GtkTrayIcon *
-_gtk_tray_icon_new_for_screen (GdkScreen  *screen, 
-                              const gchar *name)
-{
-  g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
-
-  return g_object_new (GTK_TYPE_TRAY_ICON, 
-                      "screen", screen, 
-                      "title", name, 
-                      NULL);
-}
-
-GtkTrayIcon*
-_gtk_tray_icon_new (const gchar *name)
-{
-  return g_object_new (GTK_TYPE_TRAY_ICON, 
-                      "title", name, 
-                      NULL);
-}
-
-GtkOrientation
-_gtk_tray_icon_get_orientation (GtkTrayIcon *icon)
-{
-  g_return_val_if_fail (GTK_IS_TRAY_ICON (icon), GTK_ORIENTATION_HORIZONTAL);
-
-  return icon->priv->orientation;
-}
-
-gint
-_gtk_tray_icon_get_padding (GtkTrayIcon *icon)
-{
-  g_return_val_if_fail (GTK_IS_TRAY_ICON (icon), 0);
-
-  return icon->priv->padding;
-}
-
-gint
-_gtk_tray_icon_get_icon_size (GtkTrayIcon *icon)
-{
-  g_return_val_if_fail (GTK_IS_TRAY_ICON (icon), 0);
-
-  return icon->priv->icon_size;
-}
diff --git a/gtk/deprecated/gtktrayicon.h b/gtk/deprecated/gtktrayicon.h
deleted file mode 100644 (file)
index 4be745e..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/* gtktrayicon.h
- * Copyright (C) 2002 Anders Carlsson <andersca@gnu.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __GTK_TRAY_ICON_H__
-#define __GTK_TRAY_ICON_H__
-
-#include "gtkplug.h"
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_TRAY_ICON             (gtk_tray_icon_get_type ())
-#define GTK_TRAY_ICON(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TRAY_ICON, GtkTrayIcon))
-#define GTK_TRAY_ICON_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TRAY_ICON, GtkTrayIconClass))
-#define GTK_IS_TRAY_ICON(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TRAY_ICON))
-#define GTK_IS_TRAY_ICON_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TRAY_ICON))
-#define GTK_TRAY_ICON_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TRAY_ICON, GtkTrayIconClass))
-       
-typedef struct _GtkTrayIcon       GtkTrayIcon;
-typedef struct _GtkTrayIconPrivate GtkTrayIconPrivate;
-typedef struct _GtkTrayIconClass   GtkTrayIconClass;
-
-struct _GtkTrayIcon
-{
-  GtkPlug parent_instance;
-
-  GtkTrayIconPrivate *priv;
-};
-
-struct _GtkTrayIconClass
-{
-  GtkPlugClass parent_class;
-
-  /* Padding for future expansion */
-  void (*_gtk_reserved1);
-  void (*_gtk_reserved2);
-  void (*_gtk_reserved3);
-  void (*_gtk_reserved4);
-};
-
-GDK_AVAILABLE_IN_ALL
-GType          gtk_tray_icon_get_type         (void) G_GNUC_CONST;
-
-GtkTrayIcon   *_gtk_tray_icon_new_for_screen  (GdkScreen   *screen,
-                                              const gchar *name);
-
-GtkTrayIcon   *_gtk_tray_icon_new             (const gchar *name);
-
-guint          _gtk_tray_icon_send_message    (GtkTrayIcon *icon,
-                                              gint         timeout,
-                                              const gchar *message,
-                                              gint         len);
-void           _gtk_tray_icon_cancel_message  (GtkTrayIcon *icon,
-                                              guint        id);
-
-GtkOrientation _gtk_tray_icon_get_orientation (GtkTrayIcon *icon);
-gint           _gtk_tray_icon_get_padding     (GtkTrayIcon *icon);
-gint           _gtk_tray_icon_get_icon_size   (GtkTrayIcon *icon);
-
-G_END_DECLS
-
-#endif /* __GTK_TRAY_ICON_H__ */
index 7b901e1ece18570b5ce2e3717a4b0ea20ae27f4b..cdc46489cfdd34103e3bdd8f363f048588442c8a 100644 (file)
--- a/gtk/gtk.h
+++ b/gtk/gtk.h
 #include <gtk/deprecated/gtkradioaction.h>
 #include <gtk/deprecated/gtkrc.h>
 #include <gtk/deprecated/gtkrecentaction.h>
-#include <gtk/deprecated/gtkstatusicon.h>
 #include <gtk/deprecated/gtkstock.h>
 #include <gtk/deprecated/gtkstyle.h>
 #include <gtk/deprecated/gtkstyleproperties.h>
index 1380131cb58cae5a2c8d276faf79c6dd03ca1d3e..2bec6e88b39a0d9ab8d2fb0e75f7b0d63323d01f 100644 (file)
@@ -117,7 +117,6 @@ noinst_PROGRAMS =  $(TEST_PROGS)    \
        testselectionmode               \
        $(testsocket_programs)          \
        testspinbutton                  \
-       teststatusicon                  \
        teststockbuttonmenu             \
        testtoolbar                     \
        testtoolbar2                    \
@@ -254,7 +253,6 @@ testselection_DEPENDENCIES = $(TEST_DEPS)
 testsocket_DEPENDENCIES = $(DEPS)
 testsocket_child_DEPENDENCIES = $(DEPS)
 testspinbutton_DEPENDENCIES = $(TEST_DEPS)
-teststatusicon_DEPENDENCIES = $(TEST_DEPS)
 teststockbuttonmenu_DEPENDENCIES = $(TEST_DEPS)
 testtreechanging_DEPENDENCIES =        $(DEPS)
 testtreednd_DEPENDENCIES = $(DEPS)
@@ -408,9 +406,6 @@ testsocket_child_SOURCES =          \
 testspinbutton_SOURCES =       \
        testspinbutton.c
 
-teststatusicon_SOURCES =       \
-       teststatusicon.c
-
 testmerge_SOURCES =            \
        testmerge.c
 
diff --git a/tests/teststatusicon.c b/tests/teststatusicon.c
deleted file mode 100755 (executable)
index d9506f1..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-/* gtkstatusicon-x11.c:
- *
- * Copyright (C) 2003 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *     Mark McLoughlin <mark@skynet.ie>
- */
-
-#define GDK_DISABLE_DEPRECATION_WARNINGS
-#include <gtk/gtk.h>
-#include <stdlib.h>
-
-typedef enum
-{
-  TEST_STATUS_INFO,
-  TEST_STATUS_QUESTION
-} TestStatus;
-
-static TestStatus status = TEST_STATUS_INFO;
-static gint timeout = 0;
-static GSList *icons = NULL;
-
-static gboolean
-size_changed_cb (GtkStatusIcon *icon,
-                int size)
-{
-  g_print ("status icon %p size-changed size = %d\n", icon, size);
-
-  return FALSE;
-}
-
-static void
-embedded_changed_cb (GtkStatusIcon *icon)
-{
-  g_print ("status icon %p embedded changed to %d\n", icon,
-          gtk_status_icon_is_embedded (icon));
-}
-
-static void
-orientation_changed_cb (GtkStatusIcon *icon)
-{
-  GtkOrientation orientation;
-
-  g_object_get (icon, "orientation", &orientation, NULL);
-  g_print ("status icon %p orientation changed to %d\n", icon, orientation);
-}
-
-static void
-screen_changed_cb (GtkStatusIcon *icon)
-{
-  g_print ("status icon %p screen changed to %p\n", icon,
-          gtk_status_icon_get_screen (icon));
-}
-
-static void
-update_icon (void)
-{
-  GSList *l;
-  gchar *icon_name;
-  gchar *tooltip;
-
-  if (status == TEST_STATUS_INFO)
-    {
-      icon_name = "dialog-information";
-      tooltip = "Some Information ...";
-    }
-  else
-    {
-      icon_name = "dialog-question";
-      tooltip = "Some Question ...";
-    }
-
-  for (l = icons; l; l = l->next)
-    {
-      GtkStatusIcon *status_icon = l->data;
-
-      gtk_status_icon_set_from_icon_name (status_icon, icon_name);
-      gtk_status_icon_set_tooltip_text (status_icon, tooltip);
-    }
-}
-
-static gboolean
-timeout_handler (gpointer data)
-{
-  if (status == TEST_STATUS_INFO)
-    status = TEST_STATUS_QUESTION;
-  else
-    status = TEST_STATUS_INFO;
-
-  update_icon ();
-
-  return TRUE;
-}
-
-static void
-visible_toggle_toggled (GtkToggleButton *toggle)
-{
-  GSList *l;
-
-  for (l = icons; l; l = l->next)
-    gtk_status_icon_set_visible (GTK_STATUS_ICON (l->data),
-                                 gtk_toggle_button_get_active (toggle));
-}
-
-static void
-timeout_toggle_toggled (GtkToggleButton *toggle)
-{
-  if (timeout)
-    {
-      g_source_remove (timeout);
-      timeout = 0;
-    }
-  else
-    {
-      timeout = gdk_threads_add_timeout (2000, timeout_handler, NULL);
-    }
-}
-
-static void
-icon_activated (GtkStatusIcon *icon)
-{
-  GtkWidget *content_area;
-  GtkWidget *dialog;
-  GtkWidget *toggle;
-
-  dialog = g_object_get_data (G_OBJECT (icon), "test-status-icon-dialog");
-  if (dialog == NULL)
-    {
-      dialog = gtk_message_dialog_new (NULL, 0,
-                                      GTK_MESSAGE_QUESTION,
-                                      GTK_BUTTONS_CLOSE,
-                                      "You wanna test the status icon ?");
-
-      gtk_window_set_screen (GTK_WINDOW (dialog), gtk_status_icon_get_screen (icon));
-      gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
-
-      g_object_set_data_full (G_OBJECT (icon), "test-status-icon-dialog",
-                             dialog, (GDestroyNotify) gtk_widget_destroy);
-
-      g_signal_connect (dialog, "response", 
-                       G_CALLBACK (gtk_widget_hide), NULL);
-      g_signal_connect (dialog, "delete_event", 
-                       G_CALLBACK (gtk_widget_hide_on_delete), NULL);
-
-      content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
-
-      toggle = gtk_toggle_button_new_with_mnemonic ("_Show the icon");
-      gtk_box_pack_end (GTK_BOX (content_area), toggle, TRUE, TRUE, 6);
-      gtk_widget_show (toggle);
-
-      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
-                                   gtk_status_icon_get_visible (icon));
-      g_signal_connect (toggle, "toggled", 
-                       G_CALLBACK (visible_toggle_toggled), NULL);
-
-      toggle = gtk_toggle_button_new_with_mnemonic ("_Change images");
-      gtk_box_pack_end (GTK_BOX (content_area), toggle, TRUE, TRUE, 6);
-      gtk_widget_show (toggle);
-
-      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
-                                   timeout != 0);
-      g_signal_connect (toggle, "toggled", 
-                       G_CALLBACK (timeout_toggle_toggled), NULL);
-    }
-
-  gtk_window_present (GTK_WINDOW (dialog));
-}
-
-static void
-do_quit (GtkMenuItem *item)
-{
-  GSList *l;
-
-  for (l = icons; l; l = l->next)
-    {
-      GtkStatusIcon *icon = l->data;
-
-      gtk_status_icon_set_visible (icon, FALSE);
-      g_object_unref (icon);
-    }
-
-  g_slist_free (icons);
-  icons = NULL;
-
-  gtk_main_quit ();
-}
-
-static void
-do_exit (GtkMenuItem *item)
-{
-  exit (0);
-}
-
-static void 
-popup_menu (GtkStatusIcon *icon,
-           guint          button,
-           guint32        activate_time)
-{
-  GtkWidget *menu, *menuitem;
-
-  menu = gtk_menu_new ();
-
-  gtk_menu_set_screen (GTK_MENU (menu),
-                       gtk_status_icon_get_screen (icon));
-
-  menuitem = gtk_menu_item_new_with_label ("Quit");
-  g_signal_connect (menuitem, "activate", G_CALLBACK (do_quit), NULL);
-
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
-
-  gtk_widget_show (menuitem);
-
-  menuitem = gtk_menu_item_new_with_label ("Exit abruptly");
-  g_signal_connect (menuitem, "activate", G_CALLBACK (do_exit), NULL);
-
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
-
-  gtk_widget_show (menuitem);
-
-  gtk_menu_popup (GTK_MENU (menu), 
-                 NULL, NULL,
-                 gtk_status_icon_position_menu, icon,
-                 button, activate_time);
-}
-
-int
-main (int argc, char **argv)
-{
-  GtkStatusIcon *icon;
-
-  gtk_init (&argc, &argv);
-
-  icon = gtk_status_icon_new ();
-
-  g_signal_connect (icon, "size-changed", G_CALLBACK (size_changed_cb), NULL);
-  g_signal_connect (icon, "notify::embedded", G_CALLBACK (embedded_changed_cb), NULL);
-  g_signal_connect (icon, "notify::orientation", G_CALLBACK (orientation_changed_cb), NULL);
-  g_signal_connect (icon, "notify::screen", G_CALLBACK (screen_changed_cb), NULL);
-  g_print ("icon size %d\n", gtk_status_icon_get_size (icon));
-
-  g_signal_connect (icon, "activate",
-                    G_CALLBACK (icon_activated), NULL);
-
-  g_signal_connect (icon, "popup-menu",
-                    G_CALLBACK (popup_menu), NULL);
-
-  icons = g_slist_append (icons, icon);
-
-  update_icon ();
-
-  timeout = gdk_threads_add_timeout (2000, timeout_handler, icon);
-
-  gtk_main ();
-
-  return 0;
-}
index 82b6409c6d0c331008961b63dfc716dd40199ad7..3f134710115006eff336afc2da845b66b9045c6a 100644 (file)
@@ -294,11 +294,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
           (strcmp (pspec->name, "adjustment") == 0))
         continue;
 
-      if (g_type_is_a (type, GTK_TYPE_STATUS_ICON) &&
-          (strcmp (pspec->name, "size") == 0 ||
-           strcmp (pspec->name, "screen") == 0))
-        continue;
-
       if (g_type_is_a (type, GTK_TYPE_STYLE_CONTEXT) &&
            strcmp (pspec->name, "screen") == 0)
         continue;
index 1970e0049606ebdc06ed08b96bfe2c853b0187f4..4c186b99aa472b5f52dff3642a4777ff3dcd0810 100644 (file)
@@ -425,9 +425,6 @@ test_type (gconstpointer data)
     return;
 #endif
 
-  if (g_type_is_a (type, GTK_TYPE_STATUS_ICON))
-    return;
-
   klass = g_type_class_ref (type);
 
   if (g_type_is_a (type, GTK_TYPE_SETTINGS))